[英]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.