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

如何让Pandas读取CSV时自动填充缺失的多层行索引值?

解决Pandas读取CSV时缺失多级索引继承上一行值的问题

问题说明

当CSV文件中多级索引的第一列存在空值(即缺失的索引值),使用pd.read_csv("file.csv", index_col=[0,1])读取后,空值会被识别为NaN,但我们需要让这些缺失的索引自动继承上一行对应的索引值。

示例CSV内容

parameter1,parameter2,2010,2011,2012
A,B,foo,foo,foo
,C,foo,foo,foo
,D,foo,foo,foo
M,N,bar,bar,bar
,O,bar,bar,bar

当前读取结果

2010  2011  2012
A      B    foo   foo   foo
NaN    C    foo   foo   foo
       D    foo   foo   foo
M      N    bar   bar   bar
NaN    O    bar   bar   bar

期望读取结果

2010  2011  2012
A      B    foo   foo   foo
       C    foo   foo   foo
       D    foo   foo   foo
M      N    bar   bar   bar
       O    bar   bar   bar

解决方案

读取CSV后,对多级索引的第一层级使用**向前填充(forward fill)**即可实现需求,提供两种简洁实现方式:

方式一:通过索引转DataFrame填充

import pandas as pd

# 读取CSV并指定多级索引
df = pd.read_csv("file.csv", index_col=[0, 1])

# 将索引转为DataFrame,填充第一级的NaN值
idx_df = df.index.to_frame()
idx_df["parameter1"] = idx_df["parameter1"].ffill()

# 重新设置为多级索引
df.index = pd.MultiIndex.from_frame(idx_df)

方式二:直接操作索引层级

import pandas as pd

df = pd.read_csv("file.csv", index_col=[0, 1])
# 对索引第一级执行向前填充,替换原层级
df.index = df.index.set_levels(df.index.get_level_values(0).ffill(), level=0)

执行上述代码后,DataFrame的索引就会自动继承上一行的缺失索引值,符合期望结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:07:08