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

如何在Pandas DataFrame中替换多字符串且避免内存问题?

解决DataFrame批量替换子串的内存错误问题

你遇到的内存错误是因为用列表批量替换时,pandas会逐个遍历每个子串并重复处理整列,多次内存分配导致溢出。可以用正则表达式一次性匹配所有要删除的子串,只遍历列一次,大幅降低内存占用:

具体实现步骤

  1. 整理需要删除的子串列表,对每个子串进行正则转义(避免特殊字符干扰匹配)
  2. 用|连接所有转义后的子串,形成一个正则匹配模式
  3. 调用str.replace一次性完成所有子串的删除

代码示例

import re

# 定义需要删除的所有子串
to_remove = [
    'SPOUSE_2','SPOUSE_nan','PARENT_2','PARENT_nan','GRANDPARENT_2','GRANDPARENT_nan','CHILD_2',
    'CHILD_nan','RELATIVE_2','RELATIVE_nan','LOVER_2','LOVER_nan','FRIEND_2','FRIEND_nan',
    '세부 대인관계문제 기타 상세_nan','세부 대인관계문제 기타 상세_','대인관계문제_1',
    '애인 관련_2','애인 관련_nan','직장 내_2','직장 내_nan','소외 문제_2','소외 문제_nan',
    '수면제_2','수면제_nan','진통제_2','진통제_nan','병원에서 처방 받은 약물_2',
    '병원에서 처방 받은 약물_nan','기타약물_nan','농약_2','농약_nan','살충제_2','살충제_nan',
    '제초제_2','제초제_nan','쥐약_2','쥐약_nan','화학약품_nan','목매달기_2','목매달기_nan',
    '가스 질식_2','가스 질식_nan','물에 뛰어들기_2','물에 뛰어들기_nan','뛰어내림_2',
    '뛰어내림_nan','칼, 송곳으로 찌르기_2','칼, 송곳으로 찌르기_nan','세부 동거자 기타 상세_nan'
]

# 生成正则匹配模式,转义特殊字符避免匹配错误
pattern = '|'.join(map(re.escape, to_remove))

# 执行批量替换,直接覆盖原列
df['EVENT_DTL'] = df['EVENT_DTL'].str.replace(pattern, '', regex=True)

补充说明

  • 如果EVENT_DTL列存在NaN值,可先填充为空字符串再替换:
    df['EVENT_DTL'] = df['EVENT_DTL'].fillna('').str.replace(pattern, '', regex=True)
    
  • 这种方法仅对列进行一次遍历操作,内存占用远低于原方案的逐个替换,能有效解决大型DataFrame的内存溢出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:55:21