如何仅为数据框中的每个用户 ID 选择最新日期,并按用户 ID 列出?



例如,如果我想从"userId"列中只获取每个唯一userId的"日期"列中的最新日期(因此仅获取每个用户的数据框中的最新日期,1:1(,并按userId列出,我将如何以最有效的方式做到这一点?有没有办法做到这一点?

我很难解决这个问题,因为数据框中为每个用户列出了多个日期,但我只想要每个用户的最新日期。例如,即使 userId 9 在 2019 年 1 月 1 日至 2019 年 11 月 30 日有多个日期,并且 userId 8 在 df 中有多个日期,从 2019 年 3 月 15 日到 2019 年 10 月 31 日,有没有办法拉取响应,例如:

userId Date
8    10/31/2019
9    11/30/2019

使用"优于"SQL 查询主体: 你寻找一些东西,指定一些"更好"的东西。然后你确保"优于"为空...这意味着没有什么比这更好的了,因此你拥有最好的。

select best.userId, best.Date
from theTable as best
left join theTable as better on best.userId = better.userId and better.Date > best.Date
where better.userId is null
group by best.userId;

这是SQL术语group by的一个非常标准的应用程序,它按每个组对数据集进行切片并应用您想要的功能(在这种情况下,最大日期(。熊猫在这种操作方面非常丰富。

因此,您的解决方案应如下所示:

df.groupby(['UserID'])['Date'].max()

最新更新