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