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

使用向量化操作在Pandas中计算序列累积最大值

问题描述

我有如下DataFrame:

value
 10
 20
 30
 20
 40
 35
 60
 100
 50
 45
 135

想要新增一列max_value,存储到当前行为止的最大值,最终结果如下:

value   max_value
 10        10
 20        20
 30        30
 20        30
 40        40
 35        40
 60        60
 100       100
 50        100
 45        100
 135       135

我已经用iterrows循环实现了需求:

max_value = df['value'].iloc[0]
for index, row_data in df.iterrows():
    if row_data['value'] > max_value:
        max_value = row_data['value']
    df.at[index, 'max_value'] = max_value

但我想找一种仅用向量化操作的高效实现方式,理想情况不用重复计算所有之前行的最大值——毕竟max_value要么是前一行的max_value,要么是当前行的value。

解决方案

直接用pandas内置的cummax()方法即可,这是完全向量化的高效操作,正好匹配你的需求:

df['max_value'] = df['value'].cummax()

这个方法会逐行计算累积最大值,每一步仅需比较当前值与之前的累积最大值,完全符合你所说的“要么是前一个max要么是当前值”的逻辑,而且相比循环实现,在数据量较大时性能提升明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:01:06