Python-根据每列的值连接多列

需要创建一个新列,根据每列的值连接多个列。例如,输入:

s1  s2  s3
1   0   0
1   1   0
0   1   2

输出:

s1  s2  s3  col
1   0   0   s1
1   1   0   s1, s2
0   1   2   s2, s3

基本上我需要在值>0时输出一个列名,即使数字大于1也只输出一次。

我使用但不起作用的代码:

df['col'] = 's1' * min(df['s1'], 1) + ', ' + 's2' * min(df['s2'], 1) + ', ' + 's3' * min(df['s3'], 1)

回答

更大的像比较值创建模板0通过DataFrame.gt再使用DataFrame.dot与矩阵乘法列名:

cols = ["s1", "s2", "s3"]
df['col'] = df[cols].gt(0).dot(df.columns + ',').str[:-1]
print (df)
   s1  s2  s3    col
0   1   0   0     s1
1   1   1   0  s1,s2
2   0   1   2  s2,s3


以上是Python-根据每列的值连接多列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>