繁体   English   中英

选择值大于 0 的所有列名

[英]Selecting all column names where value is greater than 0

我有未定义数量的具有某些值的列。 例如,假设有 4 列: [a,b,c,d] ,并且每个列名都有关联的值,如下所示:

a   b   c   d
0   23  11  0
11  43  33  22
12  0   12  0

我想在d旁边写另一列,它具有值大于 0 的列的最大值,例如:像这样:

a   b   c   d   e
0   23  11  0   b,c
11  43  33  22  a,b,c,d
12  0   12  0   a,c

我的尝试:

dic2 = {'a':[12,0,23],'b':[21,23,0],'c':[0,22,33],'d':[0,22,0]}
df = pd.DataFrame(dic2)
df[df>0]

这将在任何为零的地方返回NaN值,但我不知道如何获取具有这些NaN值的列。

您可以将大于0值过滤为布尔 DataFrame ,然后使用DataFrame.dot与列名进行矩阵乘法,最后通过使用str索引删除分隔符:

df['e'] = df.gt(0).dot(df.columns + ',').str[:-1]
print (df)
    a   b   c   d      e
0  12  21   0   0    a,b
1   0  23  22  22  b,c,d
2  23   0  33   0    a,c

您可以创建一个新列并在所有其他列上使用max函数

df['D'] = df.max(axis=1)

代码将检查所有列。 如果你想从哪些列中指定你想让最大值像那样指定它们

df['D'] = df[column].max(axis=1)

或列列表

df['D'] = df[[column1, column2]].max(axis=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM