Поиск элементов одного столбца на листе Excel с другим столбцом на другом листе - PullRequest
0 голосов
/ 19 мая 2019

У меня есть столбец «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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...