Python数据帧匹配列表中的字符串
我需要在数据框列中搜索列表中匹配的字符串,并将匹配返回到数据框中的新列中。下面的代码可以工作,但效率非常低,我的数据帧中有数百万行Python数据帧匹配列表中的字符串,python,python-3.x,pandas,Python,Python 3.x,Pandas,我需要在数据框列中搜索列表中匹配的字符串,并将匹配返回到数据框中的新列中。下面的代码可以工作,但效率非常低,我的数据帧中有数百万行 import pandas as pd Cars = {'MakeModel': ['HondaCivic','Toyota_Corolla','FordFocus','Audi--A4']} df = pd.DataFrame(data=Cars) mlist = ['Honda','Toyota','Ford','Audi'] for i in d
import pandas as pd
Cars = {'MakeModel': ['HondaCivic','Toyota_Corolla','FordFocus','Audi--A4']}
df = pd.DataFrame(data=Cars)
mlist = ['Honda','Toyota','Ford','Audi']
for i in df.index:
for x in mlist:
if x in df.get_value(i,'MakeModel'):
df.set_value(i,'Make', x)
让我们将
str.extract
与捕获组一起使用。这将从每个单元格(如果存在)中提取“make”,或在该行中插入nan
import re
df['Make'] = df['MakeModel'].str.extract(
r'({})'.format('|'.join(map(re.escape, mlist))), expand=False)
df
MakeModel Make
0 HondaCivic Honda
1 Toyota_Corolla Toyota
2 FordFocus Ford
3 Audi--A4 Audi
map(re.escape,mlist)
可以替换为mlist
,如果您确定mlist
字符串不包含任何需要转义的正则表达式元字符 在同一行代码中,有没有一种方法可以用“Unknown”代替nan?这非常有效-谢谢!它在不到一分钟的时间内处理了3000万行@在某种程度上,你可以在结果上使用.fillna('Unknown')。extract无法单独完成这项工作。