Iam尝试根据groupby的另一列获取具有最大值的行,我正在尝试按照此处给出的解决方案Python : Getting the Row which has the max value in groups using groupby,但是当您应用
时它不起作用annotations.groupby(['bookid','conceptid'], sort=False)['weight'].max()
我得到了
bookid conceptid
12345678 3942 0.137271
10673 0.172345
1002 0.125136
34567819 44407 1.370921
5111 0.104729
6160 0.114766
200 0.151629
3504 0.152793
但我想只获得权重最高的行,例如
bookid conceptid
12345678 10673 0.172345
34567819 44407 1.370921
我很感激任何帮助
答案 0 :(得分:5)
如果你需要bookid并且想要最大重量,请试试这个
annotations.ix[annotations.groupby(['bookid'], sort=False)['weight'].idxmax()][['bookid', 'conceptid', 'weight']]
注意:由于Pandas v0.20 ix
已被弃用。请改用.loc
。
答案 1 :(得分:1)
根据你想要的例子,我认为你的小组中有太多东西。我想你只想:
annotations.groupby(['bookid'], sort=False)['weight'].max()
答案 2 :(得分:0)
分组之后,我们可以将聚合函数作为字典传递给agg函数中的字典。
annotations.groupby('bookid').agg({'weight': ['max']})