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

如何用对应列均值批量替换DataFrame中所有列的'XX'值

批量替换多列中的'XX'为对应列均值

针对你有200+列的大型数据集,这里有两种高效的批量处理方案,比逐列手动操作省心太多:

方案一:全列统一处理(所有列均为需处理的数值属性)

如果你的数据集里所有列都是需要替换'XX'的数值属性,可以直接用pandas的向量化操作一步完成,效率远超循环:

import pandas as pd
import numpy as np

# 第一步:把所有列转成数值型,将'XX'强制转为NaN
df = df.apply(pd.to_numeric, errors='coerce')
# 第二步:用每列的均值填充NaN(也就是原来的'XX'位置)
df = df.fillna(df.mean())

方案二:仅处理包含'XX'的列(避免干扰无关列)

如果数据集中有部分列是不需要处理的字符串列,可以先筛选出包含'XX'的列再处理:

import pandas as pd
import numpy as np

# 筛选出存在'XX'的列
cols_with_xx = df.columns[df.isin(['XX']).any()]

# 对目标列进行转换和填充
df[cols_with_xx] = df[cols_with_xx].apply(pd.to_numeric, errors='coerce')
df[cols_with_xx] = df[cols_with_xx].fillna(df[cols_with_xx].mean())

为什么这个方法比逐列操作更好?

pandas的apply和fillna都是向量化操作,内部做过性能优化,面对200+列的大型数据集,比循环遍历每列执行替换要快得多,代码也更简洁易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:48:11