我在一个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