реверс_геокодер на питоне с пандой - PullRequest
1 голос
/ 10 марта 2019

В настоящее время я использую этот код для просмотра файла и получения района, однако выполнение занимает вечность, так как у меня есть 118185 строк данных для прохождения. Есть ли другой способ использовать reverse_geocoder, который не займет так много времени

df["coord"]=list(zip(df["pickup_latitude"],df["pickup_longitude"]))
list1 = []
for x,y in df["coord"]: 
    coordinates=(x,y)
    newItem = rg.search(coordinates)[0].get('admin2')
    list1.append(newItem)

1 Ответ

0 голосов
/ 10 марта 2019

Основываясь на демонстрационной записной книжке PyData 2015 в репозитории reverse_geocoder GitHub, вы можете передать кортеж кортежей в rg.search() для одновременной обработки нескольких пар координат.

# Convert lat and long columns to a tuple of tuples
coords = tuple(zip(df['pickup_latitude'], df['pickup_longitude']))

results_rg = rg.search(coords)
results_admin2 = [x.get('admin2') for x in results_rg]

# Optional: insert admin2 results into new df column
df['admin2'] = results_admin2

Если это все еще слишком медленно, вы можете попробовать простой тест скорости, используя только первые несколько строк df. Например, чтобы запустить приведенный выше код в первых 1000 строках DataFrame, измените первую строку следующим образом:

coords = tuple(zip(df['pickup_latitude'].iloc[:1000], 
                   df['pickup_longitude'].iloc[:1000]))
...