2 回答
TA贡献1835条经验 获得超7个赞
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”,请从正则表达式中删除“$”。
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]
添加回答
举报