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]
添加回答
舉報