You need to enable JavaScript to run this app. 如何实现股票价格DataFrame每行除以前一行计算价格比率
优惠活动
大模型
产品
解决方案
定价
更多

如何实现股票价格DataFrame每行除以前一行计算价格比率

实现方法

你直接用pandas的shift()方法配合数值列的除法操作就能实现,核心逻辑是把所有股票价格列整体向下偏移1行,再用原数据除以偏移后的数据即可得到你要的比值,操作前需要先保证日期按升序排序,避免顺序错误导致结果异常。

完整可运行代码示例

import pandas as pd

# 这里是示例数据构造,你可以替换成自己的原始DataFrame
data = {
    "日期": ["2003-01-03", "2003-01-04", "2003-01-05"],
    "CSCO": [10, 9, 8],
    "INTC": [9, 9, 9],
    "MSFT": [8, 6, 5],
    "WBA": [6, 4, 3]
}
df = pd.DataFrame(data)

# 按日期升序排序
df = df.sort_values("日期").reset_index(drop=True)
# 提取所有股票列(排除日期列)
stock_cols = [col for col in df.columns if col != "日期"]
# 计算当日价格/前一交易日价格
df[stock_cols] = df[stock_cols] / df[stock_cols].shift(1)

# 如果需要保留指定小数位,可以加round方法,比如保留5位:df[stock_cols] = df[stock_cols].round(5)
print(df)

输出结果

和你预期的格式完全一致:

日期CSCOINTCMSFTWBA
2003-01-03NaNNaNNaNNaN
2003-01-040.91.00.750.666667
2003-01-050.8888891.00.8333330.75

如果后续需要换算成常规的涨跌幅数据,直接给计算得到的比值减1再乘以100即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:36:03