簡體   English   中英

在 pandas Dataframe 列中保持匹配並刪除 rest

[英]keep match in pandas Dataframe column and remove the rest

我有一個名為名稱的列表

names = ['kramer hickok', 'carlos ortiz ', 'talor gooch', 'mikumu horikawa', 'yoshinori fujimoto']

另外,我有一個名為pagepandas.DataFrame dataframe 如下所示:

     name
--   ---------------------------
0    kramer hickok united states   
1    carlos ortiz mexico  
2    talor gooch united states    
3    mikumu horikawa japan
4    yoshinori fujimoto japan

我想替換列中的所有國家/地區。 我怎樣才能盡快做到這一點?

所需的 output:

     name
--   ---------------------------
0    kramer hickok  
1    carlos ortiz 
2    talor gooch 
3    mikumu horikawa 
4    yoshinori fujimoto 

我嘗試了以下沒有結果:

for name in names:
   page['name'] = page['name'].str.extract(name)

謝謝

你可以試試.str.extract

page['out'] = page['name'].str.extract(r'\b(' + '|'.join(names) + r')\b')
print(page)

                          name                 out
0  kramer hickok united states       kramer hickok
1          carlos ortiz mexico        carlos ortiz
2    talor gooch united states         talor gooch
3        mikumu horikawa japan     mikumu horikawa
4     yoshinori fujimoto japan  yoshinori fujimoto
5  mikumumikumu horikawa japan                 NaN

完全更換色譜柱怎么樣?

page['name'] = names

我認為這將花費更少的時間並且更容易處理。

(※請注意,如果使用此代碼,名稱中不應有重復。)

如果每個名字都只是兩個詞,你甚至不需要你的列表:

df.name = df.name.str.extract('(\w+ \w+)')
print(df)
# Output:
                 name
0       kramer hickok
1        carlos ortiz
2         talor gooch
3     mikumu horikawa
4  yoshinori fujimoto

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM