如何将yahooquery的fund_holding_info输出转为持仓明细DataFrame
将yahooquery基金持仓数据转为结构化DataFrame的方法
yahooquery返回的fund_holding_info接口中,holdings字段本身就是结构化的列表格式,不需要先把整个返回结果转DataFrame再过滤,直接提取该字段转换即可。
单标的处理代码
import pandas as pd from yahooquery import Ticker # 初始化查询标的 fund = Ticker('HACAX') # 直接提取持仓列表 holdings_list = fund.fund_holding_info['HACAX']['holdings'] # 转换为DataFrame df_holdings = pd.DataFrame(holdings_list)
多标的批量处理代码
如果需要同时查询多只基金的持仓并合并为同一个DataFrame,可以用以下方式:
import pandas as pd from yahooquery import Ticker tickers = ['HACAX', 'HASGX'] all_holdings = [] funds = Ticker(tickers) for ticker in tickers: # 提取单只基金的持仓列表 single_holdings = funds.fund_holding_info[ticker]['holdings'] # 给每条持仓记录标注所属基金代码,方便后续区分 for item in single_holdings: item['fund_code'] = ticker all_holdings.extend(single_holdings) # 合并所有持仓为结构化DataFrame df_all_holdings = pd.DataFrame(all_holdings)
转换完成的DataFrame会自动包含持仓标的代码、持仓名称、持仓占比等对应字段,行列结构完整。
内容的提问来源于stack exchange,提问作者spartanboy
相关产品推荐
相关产品推荐

