亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過從特定字符替換以及 on/forward 來使用 str.replace

如何通過從特定字符替換以及 on/forward 來使用 str.replace

阿波羅的戰車 2023-08-15 18:54:55
這是我想要清理的表格的摘錄。我嘗試做的事情:df_sb['SB'] = df_sb['SB'].str.replace('-R*', '', df_sb['SB'].shape[0])我期望這個(沒有-Rxx):但我已經得到了這個(只有破折號[-]和字符“R”被替換):你能幫我得到第 4 項想要的結果嗎?
查看完整描述

2 回答

?
qq_花開花謝_0

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”,請從正則表達式中刪除“$”。


查看完整回答
反對 回復 2023-08-15
?
隔江千里

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]


查看完整回答
反對 回復 2023-08-15
  • 2 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號