Python数据框匹配列表中的字符串

标签 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 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
如果您确定 mlist 字符串不包含任何正则表达式,则可以将

map(re.escape, mlist) 替换为 mlist需要转义的元字符。

关于Python数据框匹配列表中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905048/

相关文章:

Python 3 : Removing list item with for loop, 这是正确的方法吗?

python - np.nanmean 不在 Dataframe 中工作?

python - 在 django 中使用适当的值渲染为 Html

python - 在python中对字符串列表进行排序,以便特定字符串(如果存在)首先出现

python-3.x - 模拟具有不同返回值的相同方法

python - 如何在整个程序的生命周期中唯一标识Python中的类

python - 将字符串转换为时间 (H :M:S) so I can subtract them

python - 大数据矩阵分解推荐系统给出MemoryError

python - 如何在 Python 网站中查找未使用的代码?

Python:在线程之间共享一个列表