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

如何在Pandas列中替换多个连续空格(千万级数据表)

解决DataFrame批量替换连续空格的问题

问题原因

你之前的两种方法失效的核心原因:

  • re.sub(' +',' ',df['Address']):re.sub仅支持单个字符串处理,直接传入Pandas Series无法逐行解析数据。
  • df.Address.replace(' +',' '):默认是普通字符串匹配(需完全匹配才替换),未启用正则解析模式。

高效解决方案(适配1000万行数据)

方法1:正则匹配指定长度连续空格(精准控制)

使用Pandas的str.replace方法,指定正则规则并开启正则模式,精准替换2-20个连续空格:

import pandas as pd

# 示例数据
df = pd.DataFrame({'Address':['123 street                   city name     country']})
# 替换2-20个连续空格为单个空格
df['Address'] = df['Address'].str.replace(r' {2,20}', ' ', regex=True)

如果需要匹配所有空白字符(如制表符),把正则改为r'\s{2,20}'即可。

方法2:分割拼接法(大数据量下更高效)

对于仅需合并任意数量连续空格的场景,用分割+拼接的方式效率更高:

df['Address'] = df['Address'].str.split().str.join(' ')

str.split()默认按任意数量空白字符分割(自动忽略首尾空格),再用单个空格拼接所有分割后的元素。

方法3:预编译正则(重复处理场景优化)

如果需要多次执行同类替换,预编译正则可减少重复解析开销:

import re

# 预编译正则规则
pattern = re.compile(r' {2,20}')
df['Address'] = df['Address'].str.replace(pattern, ' ', regex=True)

验证结果

处理后Address字段的输出为:

0    123 street city name country
Name: Address, dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:22:41