原谅,如果这是重复的。看起来应该如此,但我已经搜索了所有建议的内容和更多内容。
我有这张桌子
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
尝试过groupby
,agg
,我一直返回最大Look_Back_Months 和总价差回报。或者只是一个或另一个。
谢谢
答案 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.max
与transform
一起使用。
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
如果有关系,这将包括重复的最大值并保持索引顺序。