У меня есть столбец «Places1» на одном листе Excel (скажем, search.xls), и есть отдельный объединенный лист Excel с колонками «Places» и «Geo-Details» (скажем, master.xls). Я хочу выполнить поиск, если элементы в столбце «Places1» в search.xls присутствуют в столбце «Places» в master.xls, и если это условие выполнено, скопируйте соответствующее содержимое столбца «Geo-Details» для этого элемента, который было найдено добавление столбца «Geo-Details1» вдоль «Places1» в search.xls, иначе в этой ячейке укажите «missing».
Я использую вложенный цикл и работаю над созданием фреймов данных с помощью панд, но этот процесс занимает очень много времени. Количество элементов в «Places1» равно 11500, а в «Place» - около 8000. Кроме того, строки, представленные в «Places1», могут не совпадать с таковыми в «Places» из-за наличия определенных суффиксов, таких как (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
Колонка - Места1 Гео-детали1
moscow jr897
riga missing
london(pg) jr2124
kiev missing
addis-ababa uy7865