[英]Most efficient way to return Column name in a pandas df
我有一個包含4個不同columns
的pandas
df
。 對於每一row
都有一個重要的value
。 我想返回顯示該value
的Column 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.