Python 我想选择某个列并创建一个新列,如果pyhton中为true,该列将返回列名?
我有一个数据框Python 我想选择某个列并创建一个新列,如果pyhton中为true,该列将返回列名?,python,pandas,Python,Pandas,我有一个数据框 A AA B D C E True 2 False 33 False False False 3 False 43 True False True 5 True 56 False True False 2 False 7 nan True 我想得到名为“result”的列,如果为true,它将返回A、B和C中的列名称,如果其中任何一个为tru
A AA B D C E
True 2 False 33 False False
False 3 False 43 True False
True 5 True 56 False True
False 2 False 7 nan True
我想得到名为“result”的列,如果为true,它将返回A、B和C中的列名称,如果其中任何一个为true,则返回nan
期望列
result
A
C
A,B
nan
首先按
True
s比较值,然后将矩阵乘法与带分隔符by的列相加,从右侧移除分隔符by,最后将空值替换为缺少的值:
df['result'] = df.eq(True).dot(df.columns + ',').str.rstrip(',').replace('',np.nan)
print (df)
A AA B D C result
0 True 2 False 33 False A
1 False 3 False 43 True C
2 True 5 True 56 False A,B
3 False 2 False 7 NaN NaN