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

如何清理Pandas DataFrame文本列:删除placeholder及前导3位字符?

解决方法

你之前的问题出在正则表达式的匹配方向错了——你写的^\d+\s+是匹配字符串开头的数字加空格,但实际要删的数字是在文本末尾,而且是和placeholder绑定在一起的,直接一步替换掉「3位数字+placeholder」的组合就行,不用分两次操作。

直接一步到位的正则替换

用这个代码就能一次性完成清理:

import pandas as pd

# 构造测试用的DataFrame
data = {
    'Group': [1, 1, 2, 2],
    'Attribute': ['A', 'A', 'A', 'B'],
    'Text': [
        "'The ball is red456placeholder'",
        "'I like pizza985placeholder.'",
        "'Fire bad 231placeholder'",
        "'Sparkling water makes me happy777placeholder'"
    ]
}
df = pd.DataFrame(data)

# 核心清理操作:匹配3位数字+placeholder的组合,替换为空
df['Text'] = df['Text'].str.replace(r'\d{3}placeholder', '', regex=True)

运行后Text列的结果会是:

0    'The ball is red'
1     'I like pizza.'
2        'Fire bad '
3    'Sparkling water makes me happy'

可选:清理末尾多余空格

如果像第三行那样替换后末尾留了空格,可以再加一步去掉首尾的单引号和多余空格:

# 同时完成替换、去引号、去首尾空格
df['Text'] = df['Text'].str.replace(r'\d{3}placeholder', '', regex=True).str.strip("' ").str.strip()

最终结果就会变成:

0    The ball is red
1     I like pizza.
2        Fire bad
3    Sparkling water makes me happy

为什么你之前的正则没用?

你写的r'^\d+\s+'是匹配字符串开头的1个以上数字加空格,但你的数据里数字全在文本末尾,根本匹配不到任何内容,所以替换后没有变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:21:07