在具有差异化的组中找到最大值

Finding the maximum value in a group with differentiation

我有一个 Pandas DataFrame,如下所示:

指数 ID value_1 value_2
0 1 200 126
1 1 200 127
2 1 200 128.1
3 1 200 125.7
4 2 300.1 85
5 2 289.4 0
6 2 0 76.9
7 2 199.7 0

我的目标是找到每个 ID 组(本例中为 1,2)中具有 value_1 列最大值的所有行。第二个条件,如果每组有多个最大值,则取value_2列最大值的行。

所以目标 table 应该是这样的:

指数 ID value_1 value_2
0 1 200 128.1
1 2 300.1 85

使用DataFrame.sort_values by all 3 columns and then DataFrame.drop_duplicates:

df1 = (df.sort_values(['ID', 'value_1', 'value_2'], ascending=[True, False, False])
         .drop_duplicates('ID'))
print (df1)
   ID  value_1  value_2
2   1    200.0    128.1
4   2    300.1     85.0