Как объединить / объединить неравные панды данных - PullRequest
0 голосов
/ 16 января 2019

Я хотел бы преобразовать следующий оператор sql в эквивалентное выражение панды.

select 
  a1.country,
  a1.platform,
  a1.url_page as a1_url_page,
  a2.url_page as a2_url_page,
  a1.userid, a1.a1_min_time,
  min(a2.dvce_created_tstamp) as a2_min_time 
from( 
    select country, platform, url_page, userid,
      min(dvce_created_tstamp) as a1_min_time
    from pageviews 
    group by 1,2,3,4) as a1 
left outer join pageviews as a2 on a1.userid=a2.userid 
    and a1.a1_min_time < a2.dvce_created_tstamp
    and a2.url_page <> a1.url_page
group by 1,2,3,4,5,6  

Мне известна команда объединения панд, однако в нашем случае у нас есть составное предложение соединения, которое включает также неравенство . Я не нашел документации о том, как справиться с этим делом.

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

Например, мы можем добавить пример входных данных

---------------------------------------------------------------- | country | platform | url_page | userid | dvce_created_tstamp | |---------------------------------------------------------------- | gr | win | a | bar | 2019-01-01 00:00:00 | | gr | win | b | bar | 2019-01-01 00:01:00 | | gr | win | a | bar | 2019-01-01 00:02:00 | | gr | win | a | foo | 2019-01-01 00:00:00 | | gr | win | a | foo | 2019-01-01 01:00:00 | Ответ от sql Expected SQL Response

Когда я использую команду слияния dataframe left, я получаю следующий вывод pandas left merge

(редактировать: добавить пример данных) Очевидно, что мы пропускаем строки с null a2_url_page

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