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

为何无法移除Pandas中desc列的非字母数字字符?

解决方法

问题根源

  1. Pandas版本兼容问题:Pandas 2.0及以上版本中,str.replace()默认regex=False,会把传入的模式当作普通字符串而非正则表达式处理,导致你的正则规则未生效。
  2. HTML实体未解码:结果中的&是HTML转义字符(对应&),未解码前无法被正则匹配为非字母数字字符。

修复代码

import pandas as pd
import html

# 读取数据
df = pd.read_csv('911.csv')

# 1. 解码HTML实体,还原特殊字符
df['desc'] = df['desc'].apply(html.unescape)

# 2. 用正则移除所有非字母数字字符,显式指定regex=True
df['desc'] = df['desc'].str.replace(r'[^a-zA-Z0-9]', '', regex=True)

# 查看处理后的前5行数据
print(df['desc'].head())

额外说明

  • 如果不需要保留空格,上述正则已经覆盖;如果需要保留空格,可将正则改为r'[^a-zA-Z0-9\s]'(\s匹配空格、换行等空白字符)。
  • 若你使用的是Pandas 1.x版本,str.replace()默认regex=True,但仍需处理HTML实体才能彻底移除所有非字母数字字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:04:51