Вычисление между двумя большими столбцами в Pandas Dataframe - PullRequest
1 голос
/ 27 мая 2020

У меня есть фрейм данных с 2 столбцами почтовых индексов, я хотел бы добавить еще один столбец с их значениями расстояния, я могу сделать это с довольно небольшим количеством строк, но теперь я работаю с фреймом данных, который имеет около 500 000 строк для расчетов. Код, который у меня есть, работает, но на моем текущем фреймворке он работал около 30 минут и все еще не был завершен, поэтому я чувствую, что то, что я делаю, крайне неэффективно.

Вот код

import pgeocode
dist = pgeocode.GeoDistance('us')

def distance_pairing(start,end):
    return dist.query_postal_code(start, end)

zips['distance'] = zips.apply(lambda x: distance_pairing(x['zipstart'], x['zipend']), axis=1)

zips

Я знаю, что о циклах не может быть и речи, так что что еще я могу сделать, с точки зрения эффективности, что могло бы улучшить это?

1 Ответ

0 голосов
/ 28 мая 2020

По возможности используйте векторизованные операции в pandas и numpy. В этом случае:

zips['distance'] = dist.query_postal_code(
    zips['zipstart'].values,
    zips['zipend'].values,
)

Это не всегда сработает, но в этом случае основная функция pgeocode.haversine записывается (в numpy) для размещения массивов x и координаты y. Это должно ускорить ваш код на несколько порядков для фрейма данных такого размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...