我正在使用Python 2.7.12
和pandas 0.20.3
,我有一个如下所示的数据框,我想替换名为number的列,当我尝试替换{{1}时,此列dtype是object }在该列中,出现如下错误,
+91
number
0 +9185600XXXXX
1 +9199651XXXXX
2 99211XXXXX
3 99341XXXXX
4 +9199651XXXXX
完整跟踪,
回溯(最近通话最近): 在第21行的文件“ encoder.py”中 df ['number'] = df ['number']。str.replace('+ 91','') 在替换文件“ /home/hduser/.local/lib/python2.7/site-packages/pandas/core/strings.py”中,行1574 标志=标志) 在str_replace的第424行中添加文件“ /home/hduser/.local/lib/python2.7/site-packages/pandas/core/strings.py” 正则表达式= re.compile(pat,flags = flags) 编译中的文件“ /usr/lib/python2.7/re.py”,第194行 返回_compile(模式,标志) _compile中的文件“ /usr/lib/python2.7/re.py”,第251行 引发错误,v#表达式无效 sre_constants.error:无需重复
但是当我替换sre_constants.error: nothing to repeat
时,它按预期工作,当我将91
放在前缀中时,它不工作,
请帮我解决这个问题。
发生错误,
+
答案 0 :(得分:1)
您可以像这样转义特殊的正则表达式值+
(one or more repetitions
)
df['number'] = df['number'].str.replace('\+91','')
或使用参数regex=False
:
df['number'] = df['number'].str.replace('+91','', regex=False)
答案 1 :(得分:1)
import pandas as pd
data={'number':['+9185600XXXXX','+9199651XXXXX']}
f=pd.DataFrame(data)
f['number']=f['number'].str.replace('\+91','')
print(f)