You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中高效获取前一组的MAX值?

更高效的实现方式

原代码用apply逐行查询的方式,每次都要遍历整个DataFrame,数据量越大性能越差。推荐用分组聚合+映射的方式,全程用Pandas的向量化操作,性能能提升几个量级。

具体步骤:

  • 先预计算每个trend_count对应的Price最大值,生成映射关系
  • 对每行的trend_count减1后,直接映射到对应的最大值

优化后代码:

# 预计算每个trend_count分组的Price最大值
trend_price_max = df_filtered.groupby('trend_count')['Price'].max()

# 映射得到当前行trend_count-1对应的最大值
df_filtered['Price_MAX_prev_TREND'] = df_filtered['trend_count'].sub(1).map(trend_price_max)

性能提升原因:

  • groupby是Pandas底层优化的向量化操作,只需要遍历一次数据就能完成所有分组的最大值计算
  • map是批量映射操作,比逐行调用自定义函数的apply效率高得多,数据量越大,性能差距越明显

边界情况说明

如果某行的trend_count是最小值(减1后没有对应的分组),结果会返回NaN,和原代码的逻辑完全一致。

内容的提问来源于stack exchange,提问作者LAP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:15:36