You need to enable JavaScript to run this app. Pandas DataFrame新增收盘价与成交量百分比变动列的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame新增收盘价与成交量百分比变动列的实现方法

股票行情百分比变动计算修正方案

核心修正思路

完全移除逐行手动遍历、自递归的冗余实现,依托pandas原生批量计算能力匹配需求,从根源解决原有代码的四类问题。

问题对应修正点

  • 直接删除函数内所有自递归调用代码,消除无限递归触发的报错
  • 放弃手动维护行索引的逐行循环逻辑,替换为pandas内置的pct_change()方法,该方法计算逻辑完全匹配需求公式(当日指标值 - 前一日指标值)/前一日指标值,支持整列批量计算,彻底解决未定义行索引、仅计算最后两行值的问题
  • 明确将新增两列后的完整DataFrame作为函数返回值输出,解决返回值为空的问题

可直接运行的修正代码

import pandas as pd
import pandas_datareader.data as web
from datetime import datetime, timedelta
def calculate_stock_changes(stock_code: str, backtrack_days: int) -> pd.DataFrame:
    # 计算回溯时间边界
    end_date = datetime.today()
    start_date = end_date - timedelta(days=backtrack_days)
    # 拉取指定区间股票行情数据
    raw_data = web.DataReader(stock_code, "yahoo", start_date, end_date)
    # 批量生成目标百分比列
    raw_data["volume % change"] = raw_data["Volume"].pct_change()
    raw_data["close % change"] = raw_data["Close"].pct_change()
    # 返回处理完成的数据集
    return raw_data
# 交互菜单调用逻辑
if __name__ == "__main__":
    stock_input = input("请输入待分析股票代码:").strip()
    days_input = int(input("请输入回溯分析天数:"))
    analysis_result = calculate_stock_changes(stock_input, days_input)
    # 输出包含目标列的结果
    print(analysis_result[["Close", "volume % change", "close % change"]])

运行效果说明

  • 计算范围覆盖全量数据行,仅第一行因无前置日期值自动填充NaN,其余行逐行匹配公式计算变动值
  • 无递归逻辑、无手动索引定义,不会触发对应类别的运行报错
  • 函数返回带完整计算列的DataFrame,可直接用于后续分析流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 13:54:07