如何在多列DataFrame中批量查找并替换指定字符串?
首先纠正你原代码里的一个问题:你写的for i in df['name of column']是在遍历该列的每个元素,不是列名,这样循环里的df[i]会把元素当作列名去查找,大概率会报错,因为这些元素不是你的DataFrame列名。
针对200多列的批量处理,有几种高效的方法:
方法1:直接对整个DataFrame批量处理
Pandas的replace方法支持直接对整个DataFrame应用正则替换,不需要循环列,这是最高效的方式:
import numpy as np import pandas as pd # 直接对所有列执行替换,正则可简化为^\w+$(\w等价于字母、数字、下划线) df.replace(r'^\w+$', np.NaN, regex=True, inplace=True)
方法2:只处理字符串类型的列
如果你的DataFrame里有数值型列,没必要对它们做替换操作,可以先筛选出字符串类型(object dtype)的列再处理:
# 筛选出所有object类型的列 string_columns = df.select_dtypes(include=['object']).columns # 仅对这些列执行替换 df[string_columns] = df[string_columns].replace(r'^\w+$', np.NaN, regex=True)
方法3:循环列名处理(不推荐,效率较低)
如果你习惯用循环的方式,要注意遍历的是列名而不是列元素:
for col_name in df.columns: df[col_name].replace(r'^\w+$', np.NaN, regex=True, inplace=True)
这种方法逐列处理,效率不如前两种矢量化操作,适合需要在循环里加额外逻辑的场景。
内容的提问来源于stack exchange,提问作者Hossein Amini
相关产品推荐
相关产品推荐

