【发布时间】:2019-07-25 00:31:37
【问题描述】:
我刚刚学习 python,有一个关于按时间集成数据帧的问题。例如,假设我有 2 个独立的数据帧,它们的时间间隔不规则,但按 study_id 分组。我想加入彼此相隔 2 小时内的行。
以前,我为此使用了 R 中的 data.table 包。此代码的示例如下。
df_new <- df1[df2, on="Study_ID", allow.cartesian=T][difftime(`date_df1`, `date_df2`, units="hours") <= 2 & difftime(`date_df1`, `date_df2`, units="hours") >= - 2]
然后,此代码会绑定每个数据框的每个实例的日期在 2 小时内的每个实例。我正在寻找是否有类似的python代码?理想情况下,我想合并这些行,以便找到测量前后 2 小时内的测量值之间出现的最大值。
有什么想法吗?谢谢!
编辑:数据框示例
ID Date HeartRate
1 4/1/2019 04:13 56
1 4/2/2019 05:30 45
1 4/3/2019 22:10 61
2 4/3/2019 23:13 62
2 4/5/2019 15:10 67
df2
ID Date Weight
1 4/1/2019 06:10 112
1 4/2/2019 02:30 114
1 4/3/2019 21:10 112.5
2 4/3/2019 23:10 113
2 4/4/2019 00:00 114
Output (this is what I would love!)
ID Date(blood pressure) HeartRate Date(weight) Weight
1 4/1/2019 4:13 56 4/1/2019 06:10 112
1 4/3/2019 22:10 61 4/3/2019 21:10 112.5
2 4/3/2019 23:13 62 4/3/2019 23:10 113
2 4/3/2019 23:13 62 4/4/2019 00:00 114
在此示例中,每个日期帧中的第二行仅被删除,因为这些测量值在 2 小时内没有一对。但是 df1 中显示的倒数第二行会重复,因为 df2 中有 2 个案例在 2 小时内。
【问题讨论】:
-
你能给我们看一个数据框的例子吗?我很难想象我们在这里谈论的是什么轴和维度。
-
@NoSplitSherlock 我已编辑添加示例,谢谢 :)
-
@molecularrunner 您仍然对解决此问题感兴趣吗?我想我可以帮你,但我的解决方案不包括最后一条记录,因为它们之间有 23 小时的延时,除非重量日期实际上是 2019 年 4 月 4 日。
标签: python r date time-series data.table