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

多股票代码财务数据存入DataFrame的优化实现问询

解决多Ticker财务数据获取的DataFrame格式化与代码简化方案

方案一:修复循环生成的DataFrame格式问题

问题根源是直接拼接嵌套结构的原始数据时,未正确展平或拆分字段。可通过以下步骤处理:

  • 对每个ticker的财务数据,先将原始返回的嵌套结构展平为标准DataFrame
  • 添加ticker列标识所属公司
  • 用pd.concat按行合并所有ticker的同类型报表数据

示例代码:

import pandas as pd
import yfinance as yfs

tickers = ['AMZN','AAPL','MSFT','DIS','GOOG']

# 处理资产负债表
balance_sheets = []
for ticker in tickers:
    # 转置后日期为行索引,指标为列,添加ticker标识
    bs = yfs.get_balance_sheet(ticker).T
    bs['ticker'] = ticker
    balance_sheets.append(bs)
final_bs = pd.concat(balance_sheets, axis=0)

# 处理利润表
income_statements = []
for ticker in tickers:
    is_ = yfs.get_income_statement(ticker).T
    is_['ticker'] = ticker
    income_statements.append(is_)
final_is = pd.concat(income_statements, axis=0)

# 处理现金流量表
cash_flows = []
for ticker in tickers:
    cf = yfs.get_cash_flow(ticker).T
    cf['ticker'] = ticker
    cash_flows.append(cf)
final_cf = pd.concat(cash_flows, axis=0)

说明:yfinance默认返回的报表以指标为行、日期为列,转置后可将日期设为行索引,每个指标独立成列,再通过ticker列区分不同公司,合并后不会出现数据挤在单个单元格的情况。

方案二:用循环大幅简化冗余代码

将三类报表的获取逻辑封装为通用流程,通过双层循环遍历ticker和报表类型,一次性生成所有合规的报表DataFrame:

示例代码:

import pandas as pd
import yfinance as yfs

tickers = ['AMZN','AAPL','MSFT','DIS','GOOG']
# 映射报表类型与对应获取函数
report_mapping = {
    'balance_sheet': yfs.get_balance_sheet,
    'income_statement': yfs.get_income_statement,
    'cash_flow': yfs.get_cash_flow
}

all_reports = {}
# 双层循环处理所有报表与ticker
for report_name, get_func in report_mapping.items():
    temp_list = []
    for ticker in tickers:
        df = get_func(ticker).T
        df['ticker'] = ticker
        temp_list.append(df)
    all_reports[report_name] = pd.concat(temp_list, axis=0)

# 引用示例
final_bs = all_reports['balance_sheet']
final_is = all_reports['income_statement']
final_cf = all_reports['cash_flow']

说明:通过字典统一管理报表类型和对应函数,避免重复编写三次几乎相同的代码,同时保证输出的DataFrame格式规范,可直接引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:45:28