小编典典

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

python

我有一个pandas df包含4个不同的columns。对于每一个row孤单一个value重要性的多数民众赞成。我想回到的Column name地方是value显示。因此,对于df以下内容,我想在Column标记值为2时返回名称。

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]

然后更改行。但这不是很有效。

我也希望将输出Seriespandas df


阅读 273

收藏
2021-01-20

共1个答案

小编典典

用途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
2021-01-20