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

在Pandas中不使用str.replace删除分隔符并清理多余空格

解决方案

不用str.replace的话,有两种简洁的方法可以直接清理分隔符和多余空格,同时拆分出有效内容:

方法1:正则表达式拆分(推荐)

利用正则的\W+匹配一个或多个非单词字符(包括-、连续空格等),直接作为拆分规则,这样会自动忽略所有分隔符和多余空格,不会产生空字符串:

处理单个字符串:

entity = df[df["Unnamed: 6"]=="Entity:"]["Unnamed: 9"].values[0]
# 拆分得到干净的列表
cleaned_list = entity.split(r'\W+')
# 结果:['FMS', 'PSO', 'Zywiec', '1']

直接在Pandas中拆分到多列:

如果要直接把拆分结果存入DataFrame的新列,用str.split配合expand=True:

# 筛选目标行并拆分,生成新列
target_series = df[df["Unnamed: 6"]=="Entity:"]["Unnamed: 9"]
df[['Col1', 'Col2', 'Col3', 'Col4']] = target_series.str.split(r'\W+', expand=True)

方法2:提取所有有效字符序列

用正则的\w+提取所有连续的字母/数字序列,自动跳过所有分隔符和空格:

处理单个字符串:

import re
entity = df[df["Unnamed: 6"]=="Entity:"]["Unnamed: 9"].values[0]
cleaned_list = re.findall(r'\w+', entity)
# 结果同样是:['FMS', 'PSO', 'Zywiec', '1']

Pandas中批量处理:

# 提取所有有效部分并转为列
extracted_parts = target_series.str.extractall(r'(\w+)').unstack()
# 重命名列名后合并到原DataFrame
extracted_parts.columns = [f'Col{i+1}' for i in range(extracted_parts.shape[1])]
df = df.join(extracted_parts)

这两种方法都不需要提前替换分隔符,直接一步完成清理和拆分,避免了多余空格和空字符串的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:05:44