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

发布于 2021-01-29 15:03:27

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

关注者
0
被浏览
76
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    用途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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看