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

如何在Pandas中仅对col2为NaN的行执行前向填充?

仅对col2为NaN的行执行前向填充的解决方案

问题背景

原始DataFrame:

col1  col2  col3
0    a   1.0   1.0
1    b   NaN   NaN   
2    c   5.0   3.0
3    d   5.0   NaN

需求:仅对col2为NaN的行执行前向填充,最终得到如下结果:

col1  col2  col3
0    a   1.0   1.0
1    b   1.0   1.0   
2    c   5.0   3.0
3    d   5.0   NaN

之前尝试的全局填充代码会对所有NaN生效(比如第3行的col3),不符合需求:

df['col2'] = df['col2'].fillna(method="ffill")
df['col3'] = df['col3'].fillna(method="ffill")

正确实现方法

方案1:掩码筛选目标行

通过布尔掩码标记需要处理的行,仅对这些行执行前向填充:

# 生成掩码:标记col2为NaN的行
mask = df['col2'].isna()
# 仅对掩码匹配的行的col2、col3执行前向填充
df.loc[mask, ['col2', 'col3']] = df.loc[mask, ['col2', 'col3']].ffill()

方案2:借助临时填充结果

先对整个DataFrame做全局前向填充,再将结果仅覆盖到目标行:

# 生成全局前向填充后的临时DataFrame
ffilled_temp = df.ffill()
# 仅替换col2为NaN的行的数据
df.loc[df['col2'].isna(), ['col2', 'col3']] = ffilled_temp.loc[df['col2'].isna(), ['col2', 'col3']]

两种方法都能精准控制填充范围,确保只有col2为NaN的行被前向填充,其他行的NaN值保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:15:03