You need to enable JavaScript to run this app. 如何不使用for循环从DataFrame列中提取逐次突破的历史最大值
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用for循环从DataFrame列中提取逐次突破的历史最大值

解法

你可以直接用pandas内置的向量化函数cummax(累积最大值)实现,全程不需要自己写循环:

步骤说明

  1. 用cummax()计算Price列从首行到当前行的最大值序列
  2. 筛选出累积最大值发生变化的行,对应的Price值就是你要的历史新最大值

完整代码

import pandas as pd
# 示例数据构造
df = pd.DataFrame({'Price': [3, 2, 12, 5, 7, 16]})
# 核心逻辑
result = df['Price'][df['Price'].cummax().diff().ne(0)].tolist()
print(result)

输出结果

[3, 12, 16]

逻辑解释

  • 示例数据的cummax()返回结果为[3, 3, 12, 12, 12, 16],每一位都是截止到当前行的历史最大值
  • 用diff()计算相邻两位的差值,差值不为0的位置就是出现新最大值的位置
  • 用得到的布尔序列过滤原Price列,就可以直接拿到所有历史新最大值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:57:03