我有一个pandas
df
,其中包含4个不同的columns
。对于每个row
,都有一个value
很重要。我想返回显示Column name
的{{1}}。因此,对于下面的value
,我想在标记值2时返回df
的名称。
Column
输出:
d = ({
'A' : [2,0,0,2],
'B' : [0,0,2,0],
'C' : [0,2,0,0],
'D' : [0,0,0,0],
})
df = pd.DataFrame(data=d)
所以应该是 A B C D
0 2 0 0 0
1 0 0 2 0
2 0 2 0 0
3 2 0 0 0
我通过
A,C,B,A
然后更改行。但这不是很有效。
我也希望从m = (df == 2).idxmax(axis=1)[0]
生成Series
的输出
答案 0 :(得分:2)
使用DataFrame.dot
:
df.astype(bool).dot(df.columns).str.cat(sep=',')
或者,
','.join(df.astype(bool).dot(df.columns))
'A,C,B,A'
或者,作为列表:
df.astype(bool).dot(df.columns).tolist()
['A', 'C', 'B', 'A']
...或系列:
df.astype(bool).dot(df.columns)
0 A
1 C
2 B
3 A
dtype: object