如何去除Pandas DataFrame中Description列的指定字符与数字?
解决Pandas DataFrame文本清洗问题
没问题,我来帮你搞定这个Description列的清洗需求!你需要移除#、-、*和所有数字,同时整理掉多余的空格,用正则表达式结合Pandas的字符串方法就能轻松实现,具体步骤如下:
实现代码
import pandas as pd import re # 初始化你的原始DataFrame df = pd.DataFrame({ 'id': [1, 2, 3], 'Description': [ '2694 A&W #5530 MONTREAL QC', 'ahi DOLLARAMA # 45 MONTREAL QC', 'PC - PAYMENT FROM - *****11*22' ] }) # 第一步:移除所有目标特殊字符和数字 df['Description'] = df['Description'].str.replace(r'[#\-*\d]+', '', regex=True) # 第二步:清理多余空格(多空格转单空格,同时去除首尾空格) df['Description'] = df['Description'].str.replace(r'\s+', ' ', regex=True).str.strip() # 查看处理后的结果 print(df)
代码说明
- 第一个正则表达式
r'[#\-*\d]+':匹配一个或多个#、-、*或者数字(\d代表数字),把这些匹配到的内容直接替换为空字符串。注意-在正则字符集里需要转义,避免被当成范围符号。 - 第二步的
r'\s+':匹配一个或多个连续空格,替换成单个空格,再用str.strip()去掉文本首尾可能残留的空格,确保格式整洁。
运行这段代码后,你就能得到和预期完全一致的结果:
id Description 0 1 A&W MONTREAL QC 1 2 ahi DOLLARAMA MONTREAL QC 2 3 PC PAYMENT FROM
如果之后需要移除其他特殊字符,只需要在第一个正则的字符集里添加对应的符号即可,比如要移除@就改成r'[#\-*\d@]+'。
内容的提问来源于stack exchange,提问作者Jerry George
相关产品推荐
相关产品推荐

