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

Pandas循环拉取雅虎财经数据时Excel工作表数据混杂问题

问题根因

company_metrics字典被定义在循环外层,每次循环都会向这个字典中追加新公司的指标数据,后续调用pd.DataFrame.from_dict(company_metrics)时,会把所有已遍历过的公司数据整体转成DataFrame写入当前工作表,最终导致后生成的工作表包含前面所有公司的累积数据。

修正方法

调整字典的作用域,每次循环单独初始化仅存储当前公司指标的字典,生成DataFrame时仅传入当前公司的单份数据,避免跨公司数据累积。修正后的完整代码如下:

import pandas as pd
import yfinance as yf
import datetime
import time

companies = ['AAPL', 'MSFT', 'AMZN', 'PYPL']

xlwriter = pd.ExcelWriter('marketcap.xlsx', engine='openpyxl')
for company in companies:
    # 单公司指标字典在循环内初始化,每次循环重置,不累积历史数据
    company_metrics = {}
    company_info = yf.Ticker(company)
    company_metrics['Market Cap'] = company_info.info['marketCap']
    # 仅转换当前公司数据为DataFrame
    df = pd.DataFrame([company_metrics])
    # 写入对应公司命名的独立工作表
    df.to_excel(xlwriter, sheet_name=company, index=False)

xlwriter.save()

说明:如果后续需要给单个公司新增其他财务指标,直接在循环内的company_metrics字典中添加对应键值对即可,不会出现数据串到其他工作表的问题。如果拉取数据时遇到请求频率限制,可以在循环末尾加time.sleep(1)设置1秒请求间隔,避免被Yahoo Finance拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:21:28