我有一個這樣的資料框:
| 卡薩 | 姓名 |
|---|---|
| 單人驅逐 | Paleta De Padel 阿迪達斯 Metalbone CTRL |
| 單人驅逐 | Zapatillas 在盔甲下奔跑充電耐力... |
| 單人驅逐 | Rompeviento Con Capucha Reebok Woven Azu |
和一個串列:
Maestro_Marcas=['阿迪達斯','銳步','Under Armour']
如何檢查 df['Name'] 的每一行,查看該行是否包含串列的值,在這種情況下獲取串列的值并將其放入新列中?結果應該是這樣的:
| 卡薩 | 姓名 | 馬卡 |
|---|---|---|
| 單人驅逐 | Paleta De Padel 阿迪達斯 Metalbone CTRL | 阿迪達斯 |
| 單人驅逐 | Zapatillas 在盔甲下奔跑充電耐力... | 安德瑪 |
| 單人驅逐 | Rompeviento Con Capucha Reebok Woven Azu | 銳步 |
uj5u.com熱心網友回復:
你可以試試findall
df['Marca'] = df['Name'].str.findall('|'.join(Maestro_Marcas))
注意,它將回傳一個查找串列,如果在一個名稱中找到兩個專案,它將回傳兩個。
為了匹配您需要的輸出
df['Marca'] = df['Name'].str.findall('|'.join(Maestro_Marcas)).str[0]
uj5u.com熱心網友回復:
您可以將 apply 與以下功能一起使用:
Maestro_Marcas=['Adidas', 'Reebebok','Under Armour']
def is_exist(name):
for i in Maestro_Marcas:
if i in name:
return i
df['Marca'] = df.apply(lambda x: is_exist(x['Name']), axis=1)
期望的結果:
Casa Name Marca
0 Solo Deportes Paleta De Padel Adidas Metalbone CTRL Adidas
1 Solo Deportes Zapatillas Running Under Armour Charged Stamin... Under Armour
2 Solo Deportes Rompeviento Con Capucha Reebok Woven Azu None
我很確定您應該在某一點上改進ReebebokvsReebok 調整的功能,因為您認為合適。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443046.html
上一篇:在其他資料框中查找值的有效方法
下一篇:如何在2列之間隨機播放值?
