假设我有一个这样的数据框:
a b c
0 x1 y1 9
1 x1 y2 9
2 x1 y3 4
3 x2 y4 2
4 x2 y5 10
5 x2 y6 5
6 x3 y7 6
7 x3 y8 4
8 x3 y9 8
9 x4 y10 11
10 x4 y11 11
11 x4 y12 11
Run Code Online (Sandbox Code Playgroud)
我首先想做一个分组排序的列c(按column分组a),然后我想保留每个组中具有最高 column 值的所有行c。所以输出将如下所示:
a b c
0 x1 y1 9
1 x1 y2 9
4 x2 y5 10
8 x3 y9 8
9 x4 y10 11
10 x4 y11 11
11 x4 y12 11
Run Code Online (Sandbox Code Playgroud)
是否有一种干净的方法可以不使用任何循环等?
您可以groupby列a并找到max每个组,然后merge返回结果数据框以保留匹配的行:
df.merge(df.groupby('a').c.max())
a b c
0 x1 y1 9
1 x1 y2 9
2 x2 y5 10
3 x3 y9 8
4 x4 y10 11
5 x4 y11 11
6 x4 y12 11
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |