pandas 返回最小值大于0的panda的列名

bf1o4zei  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个包含一个日期列和其余数值列的 Dataframe ,如下所示

date         col1        col2        col3          col4
2020-1-30        0            1           2             3
2020-2-1         0            2           3             4
2020-2-2         0            2           2             5

现在,我希望找到为每列提供最小总和的列的名称,但仅当其大于0时。因此,在上面的示例中,我希望它为我提供col2作为结果,因为此列(5)的总和是除col1(为0)之外的所有其他列中最小的。如能提供任何帮助,我们将不胜感激

edqdpe6u

edqdpe6u1#

我会使用:

# get only numeric columns
df2 = df.select_dtypes('number')

# drop the columns with 0, compute the sum
# get index of min
out = df2.loc[:, df2.ne(0).all()].sum().idxmin()

如果要仅在所有值都为0时忽略某列,请使用any代替all

df2.loc[:, df2.ne(0).any()].sum().idxmin()

输出:'col2'

所有最小值

# get only numeric columns
df2 = df.select_dtypes('number')

# drop the columns with 0, compute the sum
s = df2.loc[:, df2.ne(0).any()].sum() 

# get all minimal
out = s[s.eq(s.min())].index.tolist()

输出:

['col2']

相关问题