这是我的代码:
maxData = all_data.groupby(['Id'])[features].agg('max')
all_data = pd.merge(all_data, maxData.reset_index(), suffixes=["", "_max"], how='left', on=['Id'])
现在,我没有获取最大值,而是如何在上述代码(groupBy ID)中获取第二个最大值
答案 0 :(得分:0)
尝试使用nlargest
maxData = all_data.groupby(['Id'])[features].apply(lambda x:x.nlargest(2)[1]).reset_index(drop=True)
答案 1 :(得分:0)
您可以在对值进行排序后使用nth方法;
maxData = all_data.sort_values("features", ascending=False).groupby(['Id']).nth(1)
请忽略apply方法,因为它会降低代码的性能。