如何用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
相关产品推荐
相关产品推荐

