【问题标题】:How to get the second largest value in Pandas Python [duplicate]如何在 Pandas Python 中获得第二大值 [重复]
【发布时间】:2019-01-16 10:38:21
【问题描述】:

这是我的代码:

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

【问题讨论】:

标签: python pandas


【解决方案1】:

尝试使用nlargest

maxData = all_data.groupby(['Id'])[features].apply(lambda x:x.nlargest(2)[1]).reset_index(drop=True)

【讨论】:

  • 我收到了这个错误TypeError: nlargest() missing 1 required positional argument: 'columns'
【解决方案2】:

你可以在排序后使用第n个方法;

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

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

【讨论】:

  • 可能是其他错误。那你能把代码发给我吗?
  • 如何将其与 all_data 合并? all_data = pd.merge(all_data, maxData.reset_index(), suffixes=["", "_secondMax"], how='left', on=['Id']) 给了我这个错误AttributeError: 'DataFrame' object has no attribute 'dtype'
  • 能否分享一下原始的 all_data 数据框定义?
  • 它只包含 310 个浮点列和一个 Id 列(ID 不是唯一的)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2019-02-27
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
相关资源
最近更新 更多