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

如何用布尔掩码将Pandas DataFrame指定单元格替换为NaN而非整行置空

你当前的写法会导致整行置空,是因为df.where()传入的是单列布尔掩码,pandas会自动按行广播匹配,只要单列对应行不满足条件,就会将整行所有字段都置为NaN。

解决方案

场景1:仅替换「Energy Supply per Capita」列中的「…」为NaN

直接对单列做处理即可,两种常用写法:

  • 使用replace方法(更简洁)
import pandas as pd
df['Energy Supply per Capita'] = df['Energy Supply per Capita'].replace('…', pd.NA)
  • 沿用现有掩码逻辑,单独对目标列应用where
mask = df['Energy Supply per Capita'] != "…"
df['Energy Supply per Capita'] = df['Energy Supply per Capita'].where(mask)

场景2:替换整个DataFrame所有列中出现的「…」为NaN

直接全局替换即可,无需单独编写掩码:

df = df.replace('…', pd.NA)

如果后续需要将目标列转为数值类型,可额外执行df['Energy Supply per Capita'] = pd.to_numeric(df['Energy Supply per Capita'])完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:18:02