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

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

pandas dataframe:根據字典替換單元格中的(獨立)子字符串

pandas dataframe:根據字典替換單元格中的(獨立)子字符串

達令說 2023-07-11 16:00:11
我想知道社區中是否有人可以提供以下幫助:目的是用正則表達式替換 pandas DataFrame 中的子字符串(基于我作為參數傳遞的字典)。盡管鍵:值替換僅應在字典鍵被發現為獨立子字符串(而不是單詞的一部分)時發生。我所說的獨立子字符串是指它在空格之后開始以前的:mapping = {   "sweatshirt":"sweat_shirt",   "sweat shirt":"sweat_shirt",   "shirt":"shirts"}df = pd.DataFrame([         ["men sweatshirt"]         ["men sweat shirt"]         ["yellow shirt"]       ])df = df.replace(mapping,regex=True)預期結果:運動衫中的子字符串“shirt”不應替換為“shirts”,因為值是另一個字符串的一部分而不是獨立值(\b)注意:我傳遞的字典相當長,所以理想情況下有一種方法可以將獨立要求(\b)作為我傳遞的字典的一部分傳遞df.replace(dict, regex=True)
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您可以使用


df[0].str.replace(fr"\b(?:{'|'.join([x for x in mapping])})\b", lambda x: mapping[x.group()])

正則表達式看起來像\b(?:sweatshirt|shirt)\b,它將匹配sweatshirt或shirt作為整個單詞。匹配將被傳遞給 lambda,并且將使用 獲取相應的值mapping[x.group()]。


多字搜索詞更新


由于您可能需要在鍵中搜索多字詞mapping,因此您應該確保最長的搜索詞在交替組中排在第一位。即,\b(?:abc def|abc)\b而不是\b(?:abc|abc def)\b。


import pandas as pd


mapping = {

   "sweat shirt": "sweat_shirt",

   "shirt": "shirts"

}


df = pd.DataFrame([

         ["men sweatshirt"],

         ["men sweat shirt"]

       ])

rx = fr"\b(?:{'|'.join(sorted([x for x in mapping],key=len,reverse=True))})\b"

df[0].str.replace(rx, lambda x: mapping[x.group()])

輸出:


0     men sweatshirt

1    men sweat_shirt

Name: 0, dtype: object


查看完整回答
反對 回復 2023-07-11
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

試試這個代碼 -


mapping = {


   " sweatshirt":" sweat_shirt",

   " shirt":" shirts"

}


import pandas as pd

df = pd.DataFrame ({'ID':["men sweatshirt", "black shirt"]}

       )


df = df.apply(lambda x: ' '+x, axis=1).replace(mapping,regex=True).ID.str.strip()

print(df)


查看完整回答
反對 回復 2023-07-11
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

在您的圖案中包含空白!:)


mapping = {


   " sweatshirt":" sweat_shirt",

   " shirt":" shirts"


}


df = ([

         ["men sweatshirt"]

       ])


df = df.replace(mapping,regex=True)


查看完整回答
反對 回復 2023-07-11
  • 3 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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