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

使用Pandas ffill()填充DataFrame缺失值失败的问题求助

解决pandas中ffill填充NaN失败的问题

你的代码填充失败主要有三个核心问题:

  • NaN判断逻辑错误:在pandas里,NaN == NaN的结果永远是False,用df['AL|ATFC|Year'] == float('NaN')根本无法识别缺失值,必须用df['AL|ATFC|Year'].isna()来检测NaN。
  • where函数逻辑颠倒:where的作用是「保留满足条件的原数值,将不满足条件的替换为第二个参数」。你原本想替换NaN,但代码中条件写的是匹配NaN,结果会保留NaN、替换非NaN值,完全和预期相反。
  • 多余的axis参数:你是对单列做填充操作,不需要指定axis=1(按行处理),这会导致逻辑混乱。

正确的填充代码

直接对目标列调用ffill()是最简洁高效的方式:

# 方式1:赋值回原列(推荐,避免原地修改的副作用)
df['AL|ATFC|Year'] = df['AL|ATFC|Year'].ffill()

# 方式2:原地修改
df['AL|ATFC|Year'].ffill(inplace=True)

如果非要用where函数修正(不推荐,属于绕弯写法):

df['AL|ATFC|Year'] = df['AL|ATFC|Year'].where(~df['AL|ATFC|Year'].isna(), df['AL|ATFC|Year'].ffill())

后续删除经纬度缺失行

填充完成后,用dropna()指定删除Latitude和Longitude列存在缺失值的行:

# 方式1:返回新DataFrame
df = df.dropna(subset=['Latitude', 'Longitude'])

# 方式2:原地修改
df.dropna(subset=['Latitude', 'Longitude'], inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:40:47