我试图按A分组,找到B的最大值,然后返回与之相关的C。你知道吗
import pandas as pd
a1 = [1,2,'x']
a2 = [1,3,'y']
a3 = [2,3,'y']
a4 = [2,4,'z']
df = pd.DataFrame([a1,a2,a3,a4], columns = ['A','B','C'])
groups = df.groupby('A')['B'].max()
df = df.join(groups, on='A', rsuffix = '_max')
df
我得到的结果是
A B C B_max
0 1 2 x 3
1 1 3 y 3
2 2 3 y 4
3 2 4 z 4
我想要的结果是
A B C B_max C_max
0 1 2 x 3 y
1 1 3 y 3 y
2 2 3 y 4 z
3 2 4 z 4 z
好吧,这里有一些选择(毫无疑问还有更多)。(1) 这只是你正在做的事情上的一个折痕(它通过使用B列的
idxmax
来获取C\u max列):(2)或者这更干净:
(3)或者您可以在
groupby/apply
调用的函数中完成这一切:相关问题 更多 >
编程相关推荐