例如我有一些数据
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)中
答案 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}
没有理由比另一个更喜欢,这只是另一种方式。