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

如何在Pandas DataFrame中创建存储trailing high值的列?

问题描述

假设我们有一个仅包含values列的DataFrame:

import pandas as pd

data_dict = {'values':[5,4,3,8,6,1,2,9,2,10]}
df = pd.DataFrame(data_dict)

其内容如下:

values
0       5
1       4
2       3
3       8
4       6
5       1
6       2
7       9
8       2
9      10

需要生成一个新列trailing_high,存储截至当前行的历史最高值,期望输出如下:

values  trailing_high
0       5              5
1       4              5
2       3              5
3       8              8
4       6              8
5       1              8
6       2              8
7       9              9
8       2              9
9      10             10

目前使用df.iterrows()循环遍历计算,运行速度极慢,求向量化优化方法。

解决方案

直接使用pandas内置的累计最大值函数cummax(),这是完全向量化的操作,性能远优于循环遍历:

df['trailing_high'] = df['values'].cummax()

执行后即可得到目标结果。cummax()会从数据起始位置开始,逐行计算截至当前行的最大值,正好匹配你需要的历史最高值逻辑,且底层基于C实现,处理大规模数据时速度比Python循环快数个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:35:25