如何在Pandas Python中获得第二大价值

时间:2019-01-16 10:38:22

标签: python pandas

这是我的代码:

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)中获取第二个最大值

2 个答案:

答案 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方法,因为它会降低代码的性能。