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

How to use str.replace by replacing from a specific character and on/forward

  1. 这是我要清理的 table 的摘录。

  1. 我尝试过的事情:

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

  1. 我预料到了这一点(没有 -Rxx):

  1. 但我有这个(只有破折号[-]和替换的字符“R”):

你能帮我从项目 4 中得到想要的结果吗?

使用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]

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(digits)(例如,我们不会删除中间的“-R101”:“A330-22-R101- R20”。我们只会删除“-R20”)。如果您真的想删除“-R101”和“-R20”,请从正则表达式中删除“$”。