如何获得Python中的第二大值

如何获得Python中的第二大值,python,pandas,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),而不是获取最大值 您可以在对值排序之后使用第n个方法 maxData = all_data.sort_val

这是我的代码:

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),而不是获取最大值


您可以在对值排序之后使用第n个方法

maxData = all_data.sort_values("features", ascending=False).groupby(['Id']).nth(1)

请忽略apply方法,因为它会降低代码的性能。

检查NLAGEST:可能在此处找到解决方案:可能是任何其他错误。你能给我发个代码吗?我怎么把它和所有的数据合并
all\u data=pd.merge(all\u data,maxData.reset\u index(),后缀=[“”,“\u secondMax”],how='left',on=['Id'])
给了我这个错误
AttributeError:'DataFrame'对象没有属性'dtype'
你能共享原始的all\u data数据帧定义吗?它只包含310个浮点列和一个
Id
列(Id不是唯一的)。我遇到此错误
TypeError:nlargest()缺少1个必需的位置参数:“columns”
maxData = all_data.sort_values("features", ascending=False).groupby(['Id']).nth(1)