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