在pandas df中返回列名称的最有效方法

时间:2018-07-09 03:51:20

标签: python pandas

我有一个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的输出

1 个答案:

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