如何在数据帧上连接/合并

2024-04-19 21:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把下面的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  

我知道pandas的merging命令,但是在我们的例子中,我们有一个复合join子句,它还包括不等式。我还没有找到一些关于如何处理这个案子的文件。你知道吗

当然,我可以考虑作为迭代数据帧的最后手段,但我不认为这是最有效的方法。你知道吗

例如,我们可以添加一些示例输入数据

---------------------------------------------------------------- | 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 merge命令时,我得到以下输出 pandas left merge

(编辑:添加示例数据) 很明显,我们错过了nulla2\u url\u页的行


Tags: a2urltimea1aspagemincountry