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

如何将DataFrame多列中的字符串'nan'批量替换为原生NaN的高效方法

写法失效的原因

你尝试的多列inplace替换不生效,是因为df[['x', 'y', 'z']]取多列的操作返回的是原DataFrame的临时副本,inplace=True只会修改这个临时副本,不会改动原DataFrame,自然看不到效果。

高效实现方案

不需要额外写自定义函数,pandas原生方法就可以直接实现多列批量替换,推荐两种稳定写法:

  1. 直接赋值替换(最稳妥,避免inplace的隐式问题)
df[['x', 'y', 'z']] = df[['x', 'y', 'z']].replace('nan', np.NaN)
  1. 用replace的subset参数指定操作列(性能更优)
df.replace('nan', np.NaN, inplace=True, subset=['x', 'y', 'z'])

额外优化建议

替换完成后你可以直接把这几列转成数值类型,解决之前的object类型问题:

# 方法1:直接转float,适合已经确认列中只有可转数值的内容
df[['x', 'y', 'z']] = df[['x', 'y', 'z']].astype(float)

# 方法2:用to_numeric更安全,遇到非数值内容会自动转NaN,适合还有未清理的异常字符的场景
df[['x', 'y', 'z']] = df[['x', 'y', 'z']].apply(pd.to_numeric)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:04