簡體   English   中英

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

[英]Most efficient way to return Column name in a pandas df

我有一個包含4個不同columnspandas df 對於每一row都有一個重要的value 我想返回顯示該valueColumn name 因此,對於下面的df ,我想在標記值為2時返回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]

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

我也希望從pandas df產生一個Series輸出

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM