2 回答

TA貢獻1853條經驗 獲得超18個贊
使用DataFrame.dot
+Series.str.rstrip
和Series.replace
:
cols = pd.Index(['A', 'B', 'C'])
df['E'] = df[cols].dot(cols + ',').str.rstrip(',').replace('', np.nan)
結果:
# print(df)
A B C D E
0 True True True True A,B,C
1 True False True True A,C
2 False False False False NaN
3 False False True True C

TA貢獻1842條經驗 獲得超13個贊
另一種方法是使用stack
s = df[cols].stack()
df['F'] = s[s.eq(True)].reset_index(1).groupby(level=0)['level_1'].agg(','.join)
print(df)
A B C D E F
0 True True True True A,B,C A,B,C
1 True False True True A,C A,C
2 False False False False NaN NaN
3 False False True True C C
添加回答
舉報