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

如何用yfinance导出多家公司近四年资产负债表至单个Excel工作簿?

获取多家公司全年度资产负债表并导出至单个Excel工作簿

现有代码仅能导出多家公司的最新年度资产负债表数据,我需要获取所有可用的年度资产负债表数据(通常为四年,例如GOOG)。感谢Luis Alejandro Vargas Ramos基于我的其他问题编写了现有代码。目前单只股票的代码可获取完整年度资产负债表数据,希望修改代码,实现将多家公司的这类数据导出至单个Excel工作簿。


现有多股票代码(仅导出最新年度数据)

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

companies = ['GOOG','MSFT','AAPL']

company_metrics = {}
for company in companies:
  
        company_metrics[company] = {}
        
        company_info = yf.Ticker(company)
        company_metrics[company] = company_info.balance_sheet
        
results = []

for i in companies:
        result = company_metrics[i].iloc[:, 0]
        results.append(result)
# 构建DataFrame
df = pd.DataFrame(results).T
df.columns = companies
# 导出到Excel
df.to_excel('102722_5Yroutput.xlsx')

单只股票获取完整年度数据的代码

import yfinance as yf

stock = yf.Ticker("MSFT")
# 返回包含所有年度的资产负债表
stock.balance_sheet

修改后的代码(获取所有年度数据并导出)

下面的代码会保留每家公司的所有年度资产负债表数据,将其整合后导出到单个Excel文件中,列名格式为公司代码-年度,清晰区分数据归属:

import pandas as pd
import yfinance as yf

companies = ['GOOG', 'MSFT', 'AAPL']
all_balance_sheets = []

for company in companies:
    ticker = yf.Ticker(company)
    # 获取完整的资产负债表(包含所有可用年度)
    bs = ticker.balance_sheet
    # 重命名列,添加公司代码前缀,格式为「公司代码-年度」
    bs.columns = [f"{company}-{col.year}" for col in bs.columns]
    all_balance_sheets.append(bs)

# 合并所有公司的数据,按财务指标对齐
combined_df = pd.concat(all_balance_sheets, axis=1)

# 导出到Excel工作簿
combined_df.to_excel('多公司全年度资产负债表.xlsx')

代码说明

  • 移除原代码中iloc[:, 0]的限制,保留资产负债表的所有列(即所有年度数据)
  • 给每个年度列加上对应公司的代码前缀,避免不同公司的同年度列名冲突
  • 按财务指标对齐合并多家公司的数据,导出的Excel中,每一行是一个财务指标,每一列对应某家公司的某年度数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:05:26