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