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

Python Pandas按Submitted列条件替换NaN缺失值报错如何修复?

修正方案

首先你需要先排查代码里的列名笔误:你给出的示例代码里将Submitted写为了Sumbitted,拼写错误会直接导致掩码逻辑失效,这是优先要确认的点。

你之前的方案不符合预期的核心原因是:fillna(method='ffill')、interpolate(method='pad')的原生逻辑是沿轴向前查找最近的非空值,哪怕间隔多行也会自动追溯,就算加了limit参数也只是限制追溯的行数,不符合你「仅取紧邻上一行值填充」的需求。

以下是全量列向量化处理的代码,无循环,适配你上千列的数据集规模:

# 生成需要填充的行掩码:仅Submitted为NaN的行需要执行填充逻辑
fill_mask = df['Submitted'].isna()

# 生成全表的上一行偏移数据集,每一行对应原表上一行的取值
df_prev_row = df.shift(1)

# 替换逻辑:仅当【当前行属于需要填充的行】且【当前值为NaN】时,替换为紧邻上一行的同列值
# 若上一行同列本身也是NaN,填充后仍为NaN,不会继续向前追溯
df = df.where(~(fill_mask & df.isna()), df_prev_row)

逻辑验证

如果需要验证填充效果,可以针对你提到的错误字段单独抽样检查:

# 例如查看CHI 2019对应行的Age14列填充前后的取值,替换为你实际的国家、年份列名即可
print(df[(df['国家列名'] == 'CHI') & (df['年份列名'] == 2019)]['Age14'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:03