Метод векторизации для генерации клеток s2 в Pandas кадре данных - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сгенерировать идентификаторы ячеек s2, используя столбцы широты и долготы из кадра данных Pandas. Какой самый эффективный способ сделать это?

Я уже пытался применить метод 'apply', чтобы добавить новый столбец в фрейм данных, но он очень медленный. Можно ли векторизовать?

import s2sphere
from s2sphere import LatLng, Cap, Angle, RegionCoverer
import math

def get_cell_ids(lat, long, level, radius):
    EARTH_RADIUS = 6371000
    region = Cap.from_axis_angle(LatLng.from_degrees(lat, long).to_point(),Angle.from_degrees(360*radius/(2*math.pi*EARTH_RADIUS)))
    coverer = RegionCoverer()
    coverer.min_level = level
    coverer.max_level = level
    cells = coverer.get_covering(region)
    return sorted([x.id() for x in cells])[0]

Вызов функции с использованием apply:

df['s2_cell_ids_search'] = df.apply(lambda x: get_cell_ids(x.loclat, x.loclng, 10, 0), axis=1)

Фрейм данных:

event_checkin   event_checkout  userprofileid   city    hotelid  loclat     loclng  
2019-12-17      2019-12-18      10003315       Delhi    37318   28.650595   77.23033    

Как можно векторизовать метод?

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