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

如何在多列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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:55:30