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

Pandas字符串replace无法替换所有匹配项的问题排查

问题:Pandas无法替换Amount列的$和£货币符号

首先创建了如下DataFrame:

import pandas as pd
dfsupport = pd.DataFrame({'Date': ['8/12/2020','8/12/2020','13/1/2020','24/5/2020','31/10/2020','11/7/2020','11/7/2020'],
                          'Category': ['Table','Chair','Cushion','Table','Chair','Mats','Mats'],
                          'Sales': ['1 table','3chairs','8 cushions','3Tables','12 Chairs','12Mats','4Mats'],
                          'Paid': ['Yes','Yes','Yes','Yes','No','Yes','Yes',],
                          'Amount': ['93.78','$51.99','44.99','38.24','£29.99','29 only','18']
                          })

尝试用以下代码替换Amount列中的$和£符号,但未生效:

patternv='|'.join(['$', '£'])
dfsupport['Amount'] = dfsupport['Amount'].str.replace(patternv,'')

执行后,$51.99和£29.99仍未被替换,结果如下:

Date Category       Sales Paid   Amount
0   8/12/2020    Table     1 table  Yes    93.78
1   8/12/2020    Chair     3chairs  Yes   $51.99
2   13/1/2020  Cushion  8 cushions  Yes    44.99
3   24/5/2020    Table     3Tables  Yes    38.24
4  31/10/2020    Chair   12 Chairs   No   £29.99
5   11/7/2020     Mats      12Mats  Yes  29 only
6   11/7/2020     Mats       4Mats  Yes       18
         Date Category      Sales Paid  Amount
1   8/12/2020    Chair    3chairs  Yes  $51.99
4  31/10/2020    Chair  12 Chairs   No  £29.99 

疑问:参考相关方案后问题仍存在,请问这是为什么?


原因及解决方法

问题根源

$是正则表达式中的特殊元字符,它代表匹配字符串的结尾位置。当你直接把$放进正则模式里时,Python的正则引擎不会把它当成普通的美元符号处理,自然匹配不到$51.99里的$,所以替换失败。而£没有特殊正则含义,问题核心出在$的转义上。

解决方法

方法1:转义特殊字符

对$进行转义,由于Python字符串中反斜杠需要二次转义,所以要写成\\$:

patternv='|'.join(['\\$', '£'])
dfsupport['Amount'] = dfsupport['Amount'].str.replace(patternv,'')

方法2:关闭正则匹配模式

使用str.replace的regex=False参数,直接按普通字符串替换,无需考虑正则特殊字符:

# 逐个替换
dfsupport['Amount'] = dfsupport['Amount'].str.replace('$', '', regex=False)
dfsupport['Amount'] = dfsupport['Amount'].str.replace('£', '', regex=False)

# 批量替换写法
for symbol in ['$', '£']:
    dfsupport['Amount'] = dfsupport['Amount'].str.replace(symbol, '', regex=False)

执行任意一种方法后,$51.99会变为51.99,£29.99会变为29.99,达到预期效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:25:26