我有一个数据框,其中包含许多包含true / false值的列。 E. g。
import pandas as pd
data = pd.DataFrame([[True, True, False],
[False, False, True],
[True, False, True],
[False, False, False],
[True, True, False]],
columns=['A','B','C'])
实际上,不仅仅是这三列。
我需要生成一个额外的列,其中每个值都是值为true的所有列的名称列表。例如,这应该是:
0 [A, B]
1 [C]
2 [A, C]
3 []
4 [A, B]
Name: X, dtype: object
在没有使用嵌套循环的情况下,Pandas中是否有任何神奇的技巧来实现这一目标(这是我迄今为止唯一的想法)?
答案 0 :(得分:1)
您可以使用apply
方法循环遍历行,并使用每一行来对列名称进行子集化:
data.apply(lambda r: data.columns[r].tolist(), axis = 1)
#0 [A, B]
#1 [C]
#2 [A, C]
#3 []
#4 [A, B]
#dtype: object