查找组返回整个行熊猫的最大值

时间:2018-07-09 17:53:18

标签: python pandas

原谅,如果这是重复的。看起来应该如此,但我已经搜索了所有建议的内容和更多内容。

我有这张桌子

     Look_Back_Months  Total Spread Return     sector
10                11             0.038961  Apartment
20                21             0.078029  Apartment
30                31             0.079272  Apartment
40                 5             0.013499     Office
50                15             0.018679     Office
60                25            -0.003378     Office

我想回来

    Look_Back_Months  Total Spread Return     sector
30                31             0.079272  Apartment
50                15             0.018679     Office

尝试过groupbyagg,我一直返回最大Look_Back_Months 总价差回报。或者只是一个或另一个。

谢谢

2 个答案:

答案 0 :(得分:4)

使用

df.sort_values('TotalSpreadReturn').drop_duplicates('sector',keep='last')
Out[270]: 
    Look_Back_Months  TotalSpreadReturn     sector
50                15           0.018679     Office
30                31           0.079272  Apartment

答案 1 :(得分:1)

您可以将groupby.maxtransform一起使用。

g = df.groupby('sector')['TotalSpreadReturn'].transform('max')
res = df[df['TotalSpreadReturn'] == g]

print(res)

    Look_Back_Months  TotalSpreadReturn     sector
30                31           0.079272  Apartment
50                15           0.018679     Office

如果有关系,这将包括重复的最大值并保持索引顺序。