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

如何将yfinance获取的季度资产负债表(company_metrics)导出至CSV?

问题分析

你遇到的核心问题是:yfinance返回的quarterly_balance_sheet本身是带日期索引的DataFrame,直接将多个这类DataFrame存入字典后,用pd.DataFrame.from_dict()无法正确解析嵌套的DataFrame结构,导致导出CSV失败。

解决方案

需要先将每个公司的资产负债表DataFrame统一结构,添加公司标识列后合并成一个完整的DataFrame,再导出CSV。修改后的代码如下:

import pandas as pd
import yfinance as yf

companies = ['AMZN','MSFT','META']  # 注意:FB已更名为META,建议更新代码中的标识

company_metrics = []
for company in companies:
    try:    
        company_info = yf.Ticker(company)
        # 获取季度资产负债表并重置索引(将日期转为列)
        balance_sheet = company_info.quarterly_balance_sheet.reset_index()
        # 添加公司代码列,标记数据所属公司
        balance_sheet['Company'] = company
        # 将处理后的DataFrame存入列表
        company_metrics.append(balance_sheet)
    except Exception as e:
        print(f"获取{company}数据失败: {str(e)}")
        pass

# 合并所有公司的DataFrame
merged_df = pd.concat(company_metrics, ignore_index=True)
# 导出CSV
merged_df.to_csv('stocksBS92222.csv', index=False)
关键修改说明
  • 替换字典为列表存储:用列表存放每个公司处理后的DataFrame,方便后续用pd.concat()合并
  • 重置索引:reset_index()将原DataFrame的日期索引转为普通列,你可以用rename将默认的index列名改为ReportDate
  • 添加公司标识:新增Company列,避免合并后无法区分数据所属公司
  • 异常捕获优化:去掉空的except,改为捕获具体异常并打印错误信息,方便排查问题
  • 更新公司代码:原代码中的FB已更名为META,同步更新可避免后续获取数据失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:15:36