首页 > 解决方案 > 多个熊猫数据帧的时间排序?

问题描述

给定DataFrame带有标识符和时间戳列的 a:

DF1:

id    visited
 X    2019-01-07T01:23:45.678
 X    2019-01-08T01:23:45.678
 Y    2019-01-08T03:44:54.789

以及一个具有相似属性的单独 DataFrame:

DF2:

id    visited
 X    2019-01-01T05:23:45.678
 Y    2019-01-08T06:44:54.789
 Y    2019-01-09T09:11:23.476
 Z    2019-01-03T08:12:12.678

如何仅针对时间戳在相应列的第二个 DataFrame (DF2) 中的时间戳之前的那些行过滤第一个 DataFrame (DF1) id

生成的数据集将是:

id    visited
 Y    2019-01-08T03:44:54.789

注意:X条目被过滤掉,因为 DF2 中的时间戳在 DF1 中的时间戳之前(而不是之后)。

预先感谢您的考虑和回复。

标签: pythonpandasdataframe

解决方案


我们可以用merge_asof

df2['Have']=True
s=pd.merge_asof(df1.sort_values('visited'),df2.sort_values('visited'),on='visited',by='id',direction = 'forward')
  id                 visited  Have
0  X 2019-01-07 01:23:45.678   NaN
1  X 2019-01-08 01:23:45.678   NaN
2  Y 2019-01-08 03:44:54.789  True
#s=s[s.Have].copy()

推荐阅读