for循环为pandas中的数据帧提取头

zih*_*eng 4 python for-loop pandas

我是python的新手.我有一个如下所示的数据框:

    A   B   C   D   E
0   1   0   1   0   1
1   0   1   0   0   1
2   0   1   1   1   0
3   1   0   0   1   0
4   1   0   0   1   1
Run Code Online (Sandbox Code Playgroud)

如何编写for循环来收集每行的列名.我希望我的结果集看起来像那样:

    A   B   C   D   E   Result
0   1   0   1   0   1   ACE
1   0   1   0   0   1   BE
2   0   1   1   1   0   BCD
3   1   0   0   1   0   AD
4   1   0   0   1   1   ADE
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我吗?谢谢!

Bou*_*oud 9

dot功能是为此目的完成的,因为您需要矩阵和列名矢量之间的矩阵点积:

df.dot(df.columns)
Out[5]: 
0    ACE
1     BE
2    BCD
3     AD
4    ADE
Run Code Online (Sandbox Code Playgroud)

如果您的数据帧是数字,那么首先通过测试您的df0来获取布尔矩阵:

(df!=0).dot(df.columns)
Run Code Online (Sandbox Code Playgroud)

PS:只需将结果分配给新列

df['Result'] = df.dot(df.columns)

df
Out[7]: 
   A  B  C  D  E Result
0  1  0  1  0  1    ACE
1  0  1  0  0  1     BE
2  0  1  1  1  0    BCD
3  1  0  0  1  0     AD
4  1  0  0  1  1    ADE
Run Code Online (Sandbox Code Playgroud)