繁体   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