如何正确导入导出带多层列索引的Pandas DataFrame?
如何正确导入导出带多层列索引的Pandas DataFrame
方法1:使用CSV格式(需指定表头行数)
CSV会把多层列索引存储为两行表头,读取时必须明确告知Pandas要读取前两行作为多层索引:
导出代码
# 导出时默认保留多层索引的表头结构,无需额外特殊设置 df_3d20.to_csv("BIST100_2020.csv", index=True)
读取代码
import pandas as pd # header=[0,1]指定用前两行作为多层列索引,index_col=0将第一列设为行索引 df = pd.read_csv("BIST100_2020.csv", header=[0,1], index_col=0)
验证结构:执行print(df.columns)会看到输出为MultiIndex类型,与原DataFrame结构完全一致。
你之前读取时结构被破坏,是因为默认header=0仅读取第一行作为表头,把第二层索引当成了表头的一部分,Pandas自动给重复的表头名添加.1 .2后缀,导致索引结构混乱。
方法2:使用更适合的二进制/Excel格式(推荐)
如果不需要CSV的文本可读性,推荐用二进制格式(如Feather、Parquet)或Excel,它们能直接保留多层索引结构,无需额外配置:
方案A:Feather格式(轻量高效)
# 导出 df_3d20.to_feather("BIST100_2020.feather") # 读取 df = pd.read_feather("BIST100_2020.feather")
方案B:Excel格式
# 导出 df_3d20.to_excel("BIST100_2020.xlsx", index=True) # 读取 df = pd.read_excel("BIST100_2020.xlsx", header=[0,1], index_col=0)
这些格式不仅能完美保留多层索引,读写速度也远快于CSV,适合处理大数据量场景。
内容的提问来源于stack exchange,提问作者Emrecan Ulu
相关产品推荐
相关产品推荐

