熊猫中多列的逐行最大值的逐列计数

时间:2019-11-22 21:51:58

标签: python 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”列),0行在“ b”列具有绝对最大值,而2行具有absmax在“ c”列(3和9)中

1 个答案:

答案 0 :(得分:3)

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}

没有理由比另一个更喜欢,这只是另一种方式。