Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数据帧匹配列表中的字符串_Python_Python 3.x_Pandas - Fatal编程技术网

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无法单独完成这项工作。