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

如何正确导入导出带多层列索引的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:17:11