2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
使用DataFrame.dot
+Series.str.rstrip
和Series.replace
:
cols = pd.Index(['A', 'B', 'C'])
df['E'] = df[cols].dot(cols + ',').str.rstrip(',').replace('', np.nan)
結(jié)果:
# 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貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
另一種方法是使用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
添加回答
舉報(bào)