根据每个唯一 ID 的最新时间戳过滤数据帧 [重复]

Posted

技术标签:

【中文标题】根据每个唯一 ID 的最新时间戳过滤数据帧 [重复]【英文标题】:Filtering dataframe based on latest timestamp for each unique id [duplicate] 【发布时间】:2018-03-21 19:06:12 【问题描述】:

标题可能有点混乱,所以这里是一个例子:

发件人:

id |     timestamp
 1 | 2015-12-02 00:00:00
 1 | 2015-12-03 00:00:00  <--- latest for id 1
 2 | 2015-12-02 00:00:00
 2 | 2015-12-04 00:00:00
 2 | 2015-12-06 00:00:00  <--- latest for id 2

到这里:

id |     timestamp
 1 | 2015-12-03 00:00:00
 2 | 2015-12-06 00:00:00

【问题讨论】:

df.groupby('id').tail(1) ? 【参考方案1】:

使用nth

In [599]: df.groupby('id', as_index=False).nth(-1)
Out[599]:
   id            timestamp
1   1  2015-12-03 00:00:00
4   2  2015-12-06 00:00:00

最好是max,因为您需要最新日期。

In [601]: df.groupby('id', as_index=False).max()
Out[601]:
   id            timestamp
0   1  2015-12-03 00:00:00
1   2  2015-12-06 00:00:00

另外,tail 在 cmets 中提到

In [602]: df.groupby('id').tail(1)
Out[602]:
   id            timestamp
1   1  2015-12-03 00:00:00
4   2  2015-12-06 00:00:00

【讨论】:

max() 取每一列的最大值,对吗?

以上是关于根据每个唯一 ID 的最新时间戳过滤数据帧 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据时间戳条件过滤数组中的唯一对象

从表中选择最新的带时间戳的值,该表对于一个列 id 有多个条目,对于每个唯一的列 id 和来自另一个表的数据

R Dataframe过滤:使用基于时间因素的唯一或重复功能

为每个员工选择一天中最早时间戳的完整记录[重复]

spark:如何在数据帧上进行 dropDuplicates,同时保持最高时间戳行 [重复]

过滤掉流分析中的重复项