如何用对应列均值批量替换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
相关产品推荐
相关产品推荐

