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

Pandas数据列清洗优化:如何替代多次apply的冗长写法?

优化Pandas字符串列批量清洗的方案

你的代码里多次调用apply(lambda x: x.replace(...))确实冗余,而且逐行处理效率偏低。这里提供两种更简洁高效的优化方式,基于Pandas的向量化字符串操作和正则表达式实现:

方案1:直接用正则表达式批量替换

把所有需要移除的字符串和符号通过正则的|(或)操作符整合,一次完成替换:

import pandas as pd

df_reviews = pd.read_csv("reviews.csv")
df_reviews = df_reviews.rename(columns={"Unnamed: 0": "index", "0": "Name"})
df_reviews['name'] = df_reviews["Name"].str.split(':', expand=True)[0]

# 一次替换所有目标内容
df_reviews['name'] = df_reviews['name'].str.replace(r'Review|[:\'\"#{}_]', '', regex=True)

df_reviews['name'] = df_reviews['name'].str.strip()

方案2:可维护的动态正则(推荐)

如果后续需要调整要移除的内容,把目标字符/字符串放在集合里,动态生成正则表达式,可读性和可维护性更强:

import pandas as pd
import re

df_reviews = pd.read_csv("reviews.csv")
df_reviews = df_reviews.rename(columns={"Unnamed: 0": "index", "0": "Name"})
df_reviews['name'] = df_reviews["Name"].str.split(':', expand=True)[0]

# 定义所有需要移除的内容,一目了然
chars_to_remove = {'Review', ':', "'", '"', '#', '{', '}', '_'}
# 转义特殊字符,避免正则语法冲突,再拼接成匹配模式
pattern = '|'.join(re.escape(char) for char in chars_to_remove)

df_reviews['name'] = df_reviews['name'].str.replace(pattern, '', regex=True)
df_reviews['name'] = df_reviews['name'].str.strip()

为什么这两种方法更好?

  • 性能更高:Pandas的str.replace是向量化操作,比逐行执行apply快得多,尤其是处理大数据集时差距明显
  • 可读性更强:所有要移除的内容集中在一处,一眼就能看清清洗规则
  • 更易维护:后续要添加/移除目标字符,只需修改正则或集合,不用重复写apply语句

如果你的需求是保留字母、数字和空格,去掉所有其他符号,还可以用更简洁的正则:

df_reviews['name'] = df_reviews['name'].str.replace(r'Review|[^a-zA-Z0-9\s]', '', regex=True).str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:31:08