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

如何用.fillna填充特定值?代码致load_weight列全为None的问题排查

问题分析与解决

错误原因

  1. inplace=True的误用:当你在fillna中使用inplace=True时,该方法会直接修改原数据并返回None。你把这个None赋值给了整个load_weight列,导致整列都变成了None。
  2. 赋值逻辑错误:你的代码试图将筛选后的整个DataFrame(包含所有列)处理后的值,赋值给load_weight列,这完全不符合你只想填充特定行的load_weight列的需求。

正确代码写法

写法一:直接定位目标列填充

df.loc[(df["dropoff_site"] == "HORNSBY BEND") & (df['load_type'] == "BRUSH"), "load_weight"] = df.loc[(df["dropoff_site"] == "HORNSBY BEND") & (df['load_type'] == "BRUSH"), "load_weight"].fillna(1000)

写法二:用变量简化条件(更易读)

# 定义筛选条件
mask = (df["dropoff_site"] == "HORNSBY BEND") & (df['load_type'] == "BRUSH")
# 仅对目标行的load_weight列填充NaN值
df.loc[mask, "load_weight"] = df.loc[mask, "load_weight"].fillna(1000)

说明

  • 上述代码先通过条件筛选出需要修改的行,然后仅针对这些行的load_weight列执行fillna操作,避免了覆盖整列的问题。
  • 不要在这个场景下使用inplace=True,因为我们需要fillna返回填充后的列值来赋值给目标位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:10:56