首页 > 解决方案 > 如何通过从特定字符替换并打开/转发来使用 str.replace

问题描述

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

在此处输入图像描述

  1. 我试图做的事情:

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

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

在此处输入图像描述

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

在此处输入图像描述

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

标签: pythonpandasstr-replace

解决方案


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”,请从正则表达式中删除“$”。


推荐阅读