生成具有匹配条件的DataFrame列名称的Series

时间:2016-10-03 17:20:45

标签: python pandas dataframe

我有一个数据框,其中包含许多包含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中是否有任何神奇的技巧来实现这一目标(这是我迄今为止唯一的想法)?

1 个答案:

答案 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