繁体   English   中英

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

[英]Python dataframe matching strings in a list

我需要在数据帧列中搜索列表中的匹配字符串,并将匹配项返回到数据帧中的新列中。 下面的代码有效,但效率极低,我的数据框中有数百万行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM