首页 > 解决方案 > 匹配另一个数据框中的文本并用识别的实体填充缺失的列

问题描述

我想用另一个数据框中的已识别关键字填充数据框中缺少的 Nan。

    import pandas as pd
import numpy as np
df1 = pd.DataFrame({'models': ['A3', '520', 'clio3', 'C3']})
df2 = pd.DataFrame({'description': ['I am selling a Citroen C3', 'I sell my Audi A3'], 'model': [np.nan, np.nan]})

更新:这种情况

df2 = pd.DataFrame({'description': ['I am selling a BMW 520 with good condition', 'I sell my Audi very good', 'clio3 for sale'], 'model': [np.nan,'A3', np.nan]})

不应替换“A3”。

在此处输入图像描述

在此处输入图像描述

预期结果

在此处输入图像描述

标签: pythonpandasnumpyspacy

解决方案


与模式一起使用s.str.extract()

df2.model=df2.description.str.extract(r'({})'.format('|'.join(df1.models)),expand=False)
print(df2)

                 description model
0  I am selling a Citroen C3    C3
1          I sell my Audi A3    A3

其中:r'({})'.format('|'.join(df1.models))给出'(A3|520|clio3|C3)'


推荐阅读