簡體   English   中英

Pandas 中多列的行列最大值的列計數

[英]column-wise count of row-wise maximum for multiple columns in pandas

例如我有一些數據

df = pd.DataFrame(np.array([[1, 2, 3], [-6, -5, -4], [7, 8, 9]]), columns=['a', 'b', 'c'])

我希望輸出為{'a': 1, 'b': 0, 'c': 2}

其中一行在“a”列中具有絕對最大值(該行-6的絕對最大值為“a”列的第二行),“b”列中有 0 行具有 absmax,“b”列中有 2 行具有 absmax c'(3 和 9)

PIR具有使用很好的解決方案idxmax中的注釋。

df.abs().idxmax(axis=1).value_counts().reindex([*df], fill_value=0).to_dict()
# {'a': 1, 'b': 0, 'c': 2}

作為替代方案,如果將結果轉換為Categorical數組,則可以繞過重新索引步驟:

pd.Categorical(df.abs().idxmax(axis=1), categories=[*df]).value_counts().to_dict()
# {'a': 1, 'b': 0, 'c': 2}

沒有理由偏愛一個而不是另一個,這只是另一種方式。

暫無
暫無

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

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