如何将yfinance导入的DataFrame转换为多级索引DataFrame
长格式DataFrame转多级索引宽格式实现方案
前置说明
默认df_long包含日期、股票代码两类维度列,以及开盘价、收盘价、成交量等行情指标列,可根据实际字段名调整代码参数。
实现代码
方法1:pivot直接转换
import pandas as pd df_wide = df_long.pivot( index="date", columns="ticker", values=["Open", "High", "Low", "Close", "Volume"] ) # 可选操作:交换列层级顺序,将股票代码放在列索引第一级,匹配yfinance原生多标的返回格式 df_wide = df_wide.swaplevel(axis=1).sort_index(axis=1)
方法2:set_index + unstack 转换(适配更复杂场景)
# 先将日期、股票代码设为多级行索引,再将股票代码层级转移到列维度 df_wide = df_long.set_index(["date", "ticker"]).unstack(level="ticker") # 支持同方法1调整列层级顺序 df_wide = df_wide.swaplevel(axis=1).sort_index(axis=1)
验证操作
- 执行
print(df_wide.columns)查看列的多级索引结构 - 执行
print(df_wide.index)确认行索引为日期格式
注意事项
- 若
df_long列名与示例不一致,将代码中date、ticker以及行情指标字段替换为实际列名即可 - 转换后若存在缺失值,可追加
.fillna()方法自定义填充规则
内容的提问来源于stack exchange,提问作者AP360
相关产品推荐
相关产品推荐

