在具有差异化的组中找到最大值
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
我有一个 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