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

Pandas DataFrame列替换$与逗号失败,求技术解决方案

问题:无法移除字符串中的$符号,仅替换了逗号?

我编写了如下代码:

import pandas as pd

df = pd.DataFrame({'A': ['$5,756', '3434', '$45', '1,344']})

pattern = ','.join(['$', ','])

df['A'] = df['A'].str.replace('$|,', '', regex=True)
print(df['A'])

我想要移除所有的$或,,将它们替换为空字符串,但目前仅成功替换了逗号。

当前得到的输出:

0    $5756
1     3434
2      $45
3    1344$

期望的输出应为:

0    5756
1     3434
2      45
3    1344

请问我哪里操作出错了?希望能得到帮助,谢谢。


解答

你的问题出在正则表达式的特殊字符处理上:

  • 在正则语法中,$是一个特殊元字符,用来匹配行的末尾位置,而不是字面意义的美元符号。所以你的正则$|,只会匹配逗号和行尾,根本不会识别字符串里的$符号,自然无法替换它。

修正方案

需要把$转义为\$,让正则把它当作普通字符处理,有两种常用方式:

方式1:直接写转义后的正则

import pandas as pd

df = pd.DataFrame({'A': ['$5,756', '3434', '$45', '1,344']})

df['A'] = df['A'].str.replace('\$|,', '', regex=True)
print(df['A'])

方式2:用re.escape自动转义特殊字符(更稳妥,适合多特殊字符场景)

如果需要处理的特殊字符较多,推荐用re.escape来自动转义所有正则元字符,避免手动转义出错:

import pandas as pd
import re

df = pd.DataFrame({'A': ['$5,756', '3434', '$45', '1,344']})

# 对每个特殊字符进行转义,再拼接成正则模式
pattern = '|'.join(map(re.escape, ['$', ',']))
df['A'] = df['A'].str.replace(pattern, '', regex=True)
print(df['A'])

两种方式运行后都会得到你期望的输出:

0    5756
1     3434
2      45
3    1344
Name: A, dtype: object

内容的提问来源于stack exchange,提问作者Md. Parvez Alam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:36:18