在excel工作表的一列中搜索元素,而在另一工作表中搜索另一列

时间:2019-05-19 06:10:57

标签: python string-matching data-cleaning fuzzywuzzy

我在一个excel工作表(例如search.xls)中有一个“ Places1”列,还有一个单独的合并的excel工作表,其中包含“ Places”和“ Geo-Details”列(例如master.xls)。我想搜索master.xls的'Places'列中是否存在search.xls的'Places1'列中的项目,如果满足该条件,请为该元素复制'Geo-Details'列的相应内容,已通过在search中的“ Places1”上添加“ Geo-Details1”列进行匹配。xls则在该单元格中写了“ missing”。

我正在使用嵌套循环,并使用熊猫来创建数据框,但过程耗时很长。 “ Places1”中的元素数为11500,“ Places”中的元素数为8000。另外,由于存在某些后缀(如(pg),&12, ()等。能否帮助您优化搜索算法和模糊匹配。

示例

让我们考虑search.xls

Column-Places1         

moscow
riga
london(pg)
kiev
addisababa

现在让我们考虑master.xls

Places        Geo-Details

chicago       aw1232
new york      aw1295
london        jr2124
moscow        jr897
addis ababa   uy7865


python code

import os
import pandas as pd
import numpy as np

df_search = pd.read_excel(r'path')
df_master = pd.read_excel(r'path')



for i in range(len(df_search['Places1'])):
    for j in range(len(df_master['Place'])):
        if df_search['Places1'][i] == df_master['Place'][j]:
            df_search.loc[i, 'Geo-Details1'] =  df_master.loc[j,'GeoDetails']
else:
   df_search.loc[i, 'Geo-Details1'] = 'missing'

df_search.to_excel(r'output path')

search.xls工作表中的预期输出

列-Places1地理详细信息1

      moscow         jr897
      riga           missing
      london(pg)     jr2124
      kiev           missing 
      addis-ababa    uy7865

0 个答案:

没有答案