Python 数据帧筛选列和返回列名

Python 数据帧筛选列和返回列名,python,pandas,filter,Python,Pandas,Filter,如何过滤熊猫数据帧,其外观如下: Head Cat1 Cat2 Cat3 "A" 0 0 1 "B" 1 0 1 因此,如果不是0,它将为每一行返回类别列名 比如说 "A" "Cat3" "B" "Cat1" "Cat3" 我不知道如何解决这个问题,我非常感谢所有帮助您可以先筛选列以获得感兴趣的列,然后调用apply并使用布尔掩码来屏蔽列: In [18]: cat_cols = df.columns[df.colu

如何过滤熊猫数据帧,其外观如下:

Head   Cat1   Cat2   Cat3
"A"     0      0      1
"B"     1      0      1
因此,如果不是0,它将为每一行返回类别列名

比如说

"A"   "Cat3"
"B"   "Cat1" "Cat3"

我不知道如何解决这个问题,我非常感谢所有帮助

您可以先筛选列以获得感兴趣的列,然后调用
apply
并使用布尔掩码来屏蔽列:

In [18]:
cat_cols = df.columns[df.columns.str.contains('Cat')]
df[cat_cols].apply(lambda row: ', '.join(cat_cols[row == 1]), axis=1)

Out[18]:
0          Cat3
1    Cat1, Cat3
dtype: object
也可以通过访问
.index
属性来检索列:

df[cat_cols].apply(lambda row: ', '.join(row.index[row == 1]), axis=1)