Оптимизация поиска в геокоде переписи: итерация через pandas фрейм данных с большим объемом данных - PullRequest
0 голосов
/ 05 мая 2020

Я хочу перебрать фрейм данных pandas и добавить значение, возвращаемое censusgeocode, в новый столбец. У меня эта функция работает, когда я делаю небольшой объем тестовых данных, однако, если попытаться использовать фрейм данных с более чем ~ 15 строками, он выйдет из строя.

import censusgeocode as cg
import pandas as pd

df = pd.DataFrame({'LATITUDE':[40.811765, 40.30019, 39.2464], 'LONGITUDE':[-81.528874, -81.83743, -83.60476]})

x_column_name = 'LONGITUDE'
y_column_name = 'LATITUDE'

def get_geoID (df):
    geoidList = []

    for index, row in df.iterrows():
        result = cg.coordinates(x=row[x_column_name], y=row[y_column_name])
        result["Census Tracts"]=[dict(geoid=k1['GEOID']) for k1 in result['Census Tracts']]
        geoid = [d['geoid'] for d in result['Census Tracts']]
        geoidList.append(geoid[0])

    df["geoID"] = geoidList

Я надеюсь, что смогу запускать фреймы данных с помощью этой функции, которая имеет 1000-5000 строк, но похоже, что моя текущая настройка не позволит этого.

Что странно, когда я запускаю эту функцию на тестовых наборах данных из ~ 15 элементов, иногда она работает отлично. Но если я снова запущу то же самое на том же самом фрейме данных, произойдет ошибка примерно 3 из 4 раз.

Ошибка, полученная при выходе из нее, всегда одна и та же: KeyError: 'CENTLON'. ValueError: невозможно проанализировать ответ от Census

Я не понимаю, что делать, поскольку эта функция на самом деле иногда работает.

...