python - 多个熊猫数据帧的时间排序?
问题描述
给定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 中的时间戳之前(而不是之后)。
预先感谢您的考虑和回复。
解决方案
我们可以用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()
推荐阅读
- php - 检索到的数据不按mysql和php的顺序
- c - c中的矩阵位置访问
- python - 将数组保存到多列而不是附加为一大列
- android - 为什么这个节拍器应用程序会崩溃?(安卓)
- python - 如何在 Python 和另一种语言之间共享内存映射文件?
- oauth-2.0 - 基本授权Angular 5获取预检响应具有无效的HTTP状态代码401
- docker - 使用 docker stack 时挂载 tmpfs
- c - 从 n 叉树中删除一个完整的分支
- php - 无法让 phpMyAdmin 在 Mac 上使用 Yii2 和 XAMPP
- javascript - 这个简单的 mergeSort 代码给出了错误的答案。有人可以找到错误吗?