使用 str 替换为 pandas 系列添加空间

我一定是误解了如何使用替换。


输入


          box

0      11M000

1  11M000(MU)

期望的输出


          box

0      11M000

1  11M000 (MU)

代码


import pandas as pd

data={'box':['11M000','11M000(MU)']}

df = pd.DataFrame(data)

df['box'] = df['box'].str.replace('.(MU)'," (MU)", regex=True)

我现在得到什么


0          11M000

1    11M000 (MU))


慕桂英3389331
浏览 88回答 4
4回答

慕的地10843

只需更换第一个支架df['box'].str.replace('(', ' (')0         11M0001    11M000 (MU)

慕的地6264312

您正在使用正则表达式,并且 () 是特殊字符。您必须转义它,因为您想匹配字符而不是在正则表达式上下文中使用特殊用例。import pandas as pddata={'box':['11M000','11M000(MU)']}df = pd.DataFrame(data)df['box'] = df['box'].str.replace(".\(MU", " (MU", regex=True)print(df)

qq_笑_17

在正则表达式中转义(),因为特殊字符并用反向引用替换\\1,regex=True是默认的Series.str.replace,所以应该省略:data={'box':['11M000','11M000(MU)']}df = pd.DataFrame(data)df['box'] = df['box'].str.replace('(\(MU\))'," \\1")print (df)           box0       11M0001  11M000 (MU)没有带参数的正则表达式解决方案,regex=False也没有转义():df['box'] = df['box'].str.replace('(MU)'," (MU)", regex=False)print (df)           box0       11M0001  11M000 (MU)

慕斯709654

df['box'] = df['box'].str.replace('('," (")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python