为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2022-07-26 16:09:15
我一定是误解了如何使用替换。输入          box0      11M0001  11M000(MU)期望的输出          box0      11M0001  11M000 (MU)代码import pandas as pddata={'box':['11M000','11M000(MU)']}df = pd.DataFrame(data)df['box'] = df['box'].str.replace('.(MU)'," (MU)", regex=True)我现在得到什么0          11M0001    11M000 (MU))
查看完整描述

4 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

只需更换第一个支架


df['box'].str.replace('(', ' (')

0         11M000

1    11M000 (MU)


查看完整回答
反对 回复 2022-07-26
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您正在使用正则表达式,并且 () 是特殊字符。您必须转义它,因为您想匹配字符而不是在正则表达式上下文中使用特殊用例。


import pandas as pd

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

df = pd.DataFrame(data)

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

print(df)


查看完整回答
反对 回复 2022-07-26
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

在正则表达式中转义(),因为特殊字符并用反向引用替换\\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)

           box

0       11M000

1  11M000 (MU)

没有带参数的正则表达式解决方案,regex=False也没有转义():


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

print (df)

           box

0       11M000

1  11M000 (MU)


查看完整回答
反对 回复 2022-07-26
?
慕斯709654

TA贡献1840条经验 获得超5个赞

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



查看完整回答
反对 回复 2022-07-26
  • 4 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号