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

如何通过从特定字符替换以及 on/forward 来使用 str.replace

如何通过从特定字符替换以及 on/forward 来使用 str.replace

阿波罗的战车 2023-08-15 18:54:55
这是我想要清理的表格的摘录。我尝试做的事情:df_sb['SB'] = df_sb['SB'].str.replace('-R*', '', df_sb['SB'].shape[0])我期望这个(没有-Rxx):但我已经得到了这个(只有破折号[-]和字符“R”被替换):你能帮我得到第 4 项想要的结果吗?
查看完整描述

2 回答

?
qq_花开花谢_0

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

str.replace在这里工作,你只需要使用正则表达式。所以你原来的答案非常接近!


df = pd.DataFrame({"EO": ["A33X-22EO-06690"] * 2, "SB": ["A330-22-3123-R01", "A330-22-3123-R02"]})


print(df)

                EO                SB

0  A33X-22EO-06690  A330-22-3123-R01

1  A33X-22EO-06690  A330-22-3123-R02

df["new_SB"] = df["SB"].str.replace(r"-R\d+$", "")


print(df)

                EO                SB        new_SB

0  A33X-22EO-06690  A330-22-3123-R01  A330-22-3123

1  A33X-22EO-06690  A330-22-3123-R02  A330-22-3123

正则表达式的含义:

r"-R\d+$"表示在字符串中的任何位置找到我们看到的字符“-R”后跟 1 个或多个数字 (\d+)。然后我们将其限制为仅当该模式出现在字符串的最末尾时才起作用。这样我们就不会意外地替换 SB 字符串中间出现的 -R(数字)(例如,我们不会删除“A330-22-R101-”中间的“-R101”) R20”。我们只会删除“-R20”)。如果您确实想删除“-R101”和“-R20”,请从正则表达式中删除“$”。


查看完整回答
反对 回复 2023-08-15
?
隔江千里

TA贡献1906条经验 获得超10个赞

使用的示例str.partition():


s = ['A330-22-3123-R-01','A330-22-3123-R-02']


for e in s:

    print(e.partition('-R')[0])

输出:


A330-22-3123                                                                                                                                                                 

A330-22-3123 

编辑:


未经测试,但就您的情况而言:


df_sb['SB'] = df_sb['SB'].str.partition('-R')[0]


查看完整回答
反对 回复 2023-08-15
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信