首页 > 解决方案 > Pandas 数据透视表或 groupby 列的绝对最大值

问题描述

我有一个数据框 df 为:

Col1    Col2
A      -5
A       3
B      -2
B       15

我需要得到以下信息:

Col1    Col2
A      -5
B       15

Col1通过从 中选择绝对最大值为每个组做出决定Col2。我不确定如何进行此操作。

标签: pandaspython-3.8

解决方案


使用DataFrameGroupBy.idxmaxwith 传递索引的绝对值,然后选择 by DataFrame.loc

df = df.loc[df['Col2'].abs().groupby(df['Col1']).idxmax()]
#alternative with reassign column
df = df.loc[df.assign(Col2 = df['Col2'].abs()).groupby('Col1')['Col2'].idxmax()]
print (df)
  Col1  Col2
0    A    -5
3    B    15

推荐阅读