![](/img/trans.png)
[英]Selecting all column names where value is greater than another column in pandas
[英]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.