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

在pandas DataFrame中对行值计算并插入新列的最优方法是什么

for循环逐行遍历不是最优实现方式,pandas的向量化操作底层由C实现,运行效率远高于Python层的循环逻辑,数据量越大性能优势越明显。

你可以直接使用shift()方法将PRICE列向下偏移1位,直接做向量除法即可完成计算:

# 仅含单支股票数据时使用
df['CHANGE_RATE'] = df['PRICE'] / df['PRICE'].shift(1)

如果你的数据集后续会加入多支不同TICKER的行情数据,为了避免跨股票计算错误,建议按TICKER分组后再计算:

# 多支股票场景,分组后计算
df['CHANGE_RATE'] = df.groupby('TICKER')['PRICE'].apply(lambda x: x / x.shift(1))

计算后第一行因为没有上一行的参考数据,会默认返回NaN,你可以根据业务需求追加fillna()方法自定义填充值,比如需要将第一行变化率设为1,修改语句为df['CHANGE_RATE'] = (df['PRICE'] / df['PRICE'].shift(1)).fillna(1)即可。

以你给出的示例数据为例,默认计算结果如下:

DATETICKERPRICECHANGE_RATE
2016-01-02AA10NaN
2016-01-03AA111.1
2016-01-04AA12≈1.0909

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:36:02