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

如何在多层索引DataFrame中按索引分组向前填充score3列

问题描述

现有如下初始数据表格:

YearMonthscore1score2score3
2022Jan98NaN100
NaNfebNaN39NaN
2021sept10050NaN
NaNnov100NaN76
NaNdec10052NaN

需要将其处理为以下结果:

YearMonthscore1score2score3
2022Jan98NaN100
2022febNaN39100
2021sept10050NaN
2021nov100NaN76
2021dec1005276

要求仅对score3列执行组内向前填充(forward fill),填充范围限制在同一Year分组内,其他列保持不变。

解决方案

步骤1:构造初始DataFrame

先把原始数据转换成pandas的DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Year': ['2022', np.nan, '2021', np.nan, np.nan],
    'Month': ['Jan', 'feb', 'sept', 'nov', 'dec'],
    'score1': [98, np.nan, 100, 100, 100],
    'score2': [np.nan, 39, 50, np.nan, 52],
    'score3': [100, np.nan, np.nan, 76, np.nan]
})

步骤2:补全Year列的缺失值

原始数据中同一Year的行仅第一行有值,先通过向前填充补全Year列:

df['Year'] = df['Year'].ffill()

步骤3:对score3执行组内向前填充

按Year分组后,仅对score3列执行向前填充,其他列保持原样:

df['score3'] = df.groupby('Year')['score3'].ffill()

执行完上述代码后,即可得到目标结果表格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:12:43