Извлечение любых 2 строк из df, которые удовлетворяют условиям - Панды - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь использовать df (взятый из 7 строк ниже), чтобы извлечь любые две строки, которые удовлетворяют 3 условиям:

  1. Расстояние между 1-м местоположением меньше x миль. Использование Haversine
  2. Расстояние между вторым местоположением менее x миль. Использование Haversine
  3. Разница между созданным временем меньше чем х минут

Haversine будет просто встроен в python

пример как

from haversine import haversine

lyon = (45.7597, 4.8422) # (lat, lon)
paris = (48.8567, 2.3508)

haversine(lyon, paris, unit='mi')
243.71201856934454  # in miles

Когда я говорю, что разница между 1-й локацией и есть разница между 1-й локацией, не принимая во внимание 2-ю локацию или 2-ю координату (таким образом, разница в x миль между любыми двумя порядками 1-й локации и разница в x милях между любыми двумя заказывает 2-е место)

       DAY     Order  1st_latitude  1st_longitude 2nd_latitude 2nd_longitude    created_time
        1/3/19  234e    32.69        -117.1          32.63      -117.08   3/1/19 19:00
        1/3/19  235d    40.73        -73.98          40.73       -73.99   3/1/19 23:21
        1/3/19  253w    40.76        -73.99          40.76       -73.99   3/1/19 15:26
        2/3/19  231y    36.08        -94.2           36.07       -94.21   3/2/19 0:14
        3/3/19  305g    36.01        -78.92          36.01       -78.95   3/2/19 0:09
        3/3/19  328s    36.76        -119.83         36.74       -119.79  3/2/19 4:33
        3/3/19  286n    35.76        -78.78          35.78       -78.74   3/2/19 0:43

Спасибо за внимание

1 Ответ

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

Общий синтаксис:

answerdf = df.loc[df[<cond1> & <cond2> & <cond3>]]

Придумайте свои условия для замены в вышеприведенном, и вы получите ответ, потому что ваш вопрос не дает четкого объяснения того, каковы ваши условия

Пример <cond>:

haversine((df['1st_latitude'], df['1st_longitude']),(df['2nd_latitude'], df['2nd_longitude']) , unit='mi') > 100

При размещении в вышеприведенном:

answerdf = df.loc[df[haversine((df['1st_latitude'], df['1st_longitude']),(df['2nd_latitude'], df['2nd_longitude']) , unit='mi') > 100]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...