猿问

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

  1. 这是我想要清理的表格的摘录。

  1. 我尝试做的事情:

df_sb['SB'] = df_sb['SB'].str.replace('-R*', '', df_sb['SB'].shape[0])

  1. 我期望这个(没有-Rxx):

https://img.mukewang.com/64db59a90001f58602180120.jpg

  1. 但我已经得到了这个(只有破折号[-]和字符“R”被替换):

    https://img2.mukewang.com/64db59b40001f61b02200119.jpg

  2. 你能帮我得到第 4 项想要的结果吗?

阿波罗的战车
浏览 132回答 2
2回答

qq_花开花谢_0

str.replace在这里工作,你只需要使用正则表达式。所以你原来的答案非常接近!df = pd.DataFrame({"EO": ["A33X-22EO-06690"] * 2, "SB": ["A330-22-3123-R01", "A330-22-3123-R02"]})print(df)                EO                SB0  A33X-22EO-06690  A330-22-3123-R011  A33X-22EO-06690  A330-22-3123-R02df["new_SB"] = df["SB"].str.replace(r"-R\d+$", "")print(df)                EO                SB        new_SB0  A33X-22EO-06690  A330-22-3123-R01  A330-22-31231  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”,请从正则表达式中删除“$”。

隔江千里

使用的示例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]
随时随地看视频慕课网APP

相关分类

Python
我要回答