如何将yfinance最新季度资产负债表结果导出至单个Excel工作簿?
问题描述
当前使用以下代码获取股票季度资产负债表数据,代码会为每只股票创建单独的工作表,且包含所有季度的数据:
import pandas as pd import yfinance as yf import datetime import time companies = ['AMZN','MSFT','FB'] company_metrics = {} for company in companies: company_metrics[company] = {} company_info = yf.Ticker(company) company_metrics[company] = company_info.quarterly_balance_sheet with pd.ExcelWriter('multiple_stocks.xlsx') as writer: for i in companies: df = pd.DataFrame(company_metrics[i]) df.to_excel(writer, sheet_name=i)
需要修改代码实现以下需求:
- 生成单个工作表
- 仅保留最新季度(报告日期6/30/22)的数据
- 各股票数据按列排列:B列为AMZN数据,C列为MSFT数据,D列为FB数据
解决方案
方案一:提取默认最新季度数据
利用quarterly_balance_sheet默认按日期倒序排列的特性,直接取第一列作为最新季度数据,合并为单表:
import pandas as pd import yfinance as yf companies = ['AMZN', 'MSFT', 'FB'] merged_df = pd.DataFrame() for ticker in companies: # 获取季度资产负债表 balance_sheet = yf.Ticker(ticker).quarterly_balance_sheet # 提取最新季度数据(第一列) latest_data = balance_sheet.iloc[:, 0] # 将当前股票数据作为新列加入合并表 merged_df[ticker] = latest_data # 写入Excel单个工作表 merged_df.to_excel('latest_quarter_balance_sheet.xlsx', sheet_name='Latest Quarter')
方案二:指定日期提取(精准匹配6/30/22)
如果需要确保提取的是指定日期的季度数据,可通过日期索引定位:
import pandas as pd import yfinance as yf target_report_date = '2022-06-30' companies = ['AMZN', 'MSFT', 'FB'] merged_df = pd.DataFrame() for ticker in companies: balance_sheet = yf.Ticker(ticker).quarterly_balance_sheet # 检查目标日期是否存在于报表列中 if target_report_date in balance_sheet.columns: merged_df[ticker] = balance_sheet[target_report_date] else: print(f"{ticker} 未找到 {target_report_date} 对应的季度数据") # 写入Excel单个工作表 merged_df.to_excel('q2_2022_balance_sheet.xlsx', sheet_name='Q2 2022')
代码说明
- 两种方案都会将多只股票的目标季度数据合并到同一个DataFrame,每只股票对应一列
- 方案一更灵活,自动适配最新报表;方案二更精准,锁定指定日期的报告数据
- 最终生成的Excel文件中,A列为指标名称,B、C、D列分别对应AMZN、MSFT、FB的季度数据
内容的提问来源于stack exchange,提问作者HTMLHelpMe
相关产品推荐
相关产品推荐

