如题,假设我有一个dataFrame,如图所示
a b c d e
0 1 2 2 1 2
1 2 0 2 1 1
2 0 1 1 2 0
3 1 1 2 2 1
4 2 1 1 0 1
我想按a列分组,求c值最大所在的行对应的d和e的值
此时如果直接df.groupby('a').max()
,求出结果为:
b c d e
a
0 1 1 2 0
1 2 2 2 2
2 1 2 1 1
显然结果是错误的。求出的是分组后每一行的最大值。
应该先df2=df.groupby('a').max()['c'].reset_index()
此时df2 为:
a c
0 0 1
1 1 2
2 2 2
然后与df组合:
df2.merge(df,how='left',on=['a','c'])
结果为:
a c b d e
0 0 1 1 2 0
1 1 2 2 1 2
2 1 2 1 2 1
3 2 2 0 1 1
此时可以看出按a分组后c值最大时所在行对应的d、e 值