本文介绍了在pandas df中返回列名称的最有效方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个pandas
df
,其中包含4个不同的columns
.对于每个row
,都有一个value
重要.我想返回显示value
的Column name
.因此,对于下面的df
,我想在标记值为2时返回Column
名称.
I have a pandas
df
that contains 4 different columns
. For every row
theres a value
thats of importance. I want to return the Column name
where that value
is displayed. So for the df
below I want to return the Column
name when the value 2 is labelled.
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]
然后更改行.但这不是很有效.
And then changing the row. But this isn't very efficient.
我也希望从pandas df
推荐答案
使用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
这篇关于在pandas df中返回列名称的最有效方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!