【发布时间】:2021-10-06 11:05:34
【问题描述】:
假设我有两个数据集。它们都有一个共同的变量——位置。数据集 A 具有秒级精度的时间戳,而数据集 B 具有毫秒级精度的时间戳。对于 R 或 python 中的每个位置,我有什么有效的方法可以按时间间隔匹配两个数据集(例如,获取数据集 A 的最新天气)?
非常感谢任何想法或意见。
数据集 A 示例
| Location | Date | Time | # items |
|---|---|---|---|
| New York | 2019-01-01 | 09:00:00 | 50 |
| New York | 2019-01-01 | 09:15:28 | 10 |
| New York | 2019-01-01 | 09:16:16 | 69 |
| New York | 2019-01-01 | 10:09:00 | 47 |
| New York | 2019-01-11 | 19:34:30 | 777 |
| New York | 2019-01-11 | 22:10:15 | 276 |
| ... | |||
| Miami | 2019-01-01 | 09:00:01 | 100 |
| Miami | 2019-01-01 | 16:07:09 | 145 |
| Miami | 2019-01-01 | 20:05:01 | 56 |
| ... | |||
| Boston | 2020-12-21 | 23:09:02 | 78 |
数据集 B 示例:
| Location | Date | Time | Weather |
|---|---|---|---|
| New York | 2019-01-01 | 05:56:09.456 | Rain |
| New York | 2019-01-01 | 08:59:23.897 | Sunny |
| New York | 2019-01-01 | 09:14:35.897 | Cloudy |
| ... | |||
| Boston | 2020-12-31 | 23:25:09.987 | Snow |
想法输出将是:
| Location | Date | Time | # items | Weather Time | Weather |
|---|---|---|---|---|---|
| New York | 2019-01-01 | 09:00:00 | 50 | 08:59:23.897 | Sunny |
| New York | 2019-01-01 | 09:15:28 | 10 | 09:14:35.897 | Cloudy |
| New York | 2019-01-01 | 09:16:16 | 69 | 09:14:35.897 | Cloudy |
| ... |
【问题讨论】:
-
您的两个数据集有多大,仅依赖精确匹配(例如位置和日期)的查找会产生多少匹配?蛮力方法在这里可能工作得很好,你加入位置和日期,然后过滤最接近的匹配。
-
如何解释“获取数据集
A的最新天气”?它是否指的是在A中的时间戳之前 之前的最新天气数据?或者,到最近时间,其中可能包括在A中的时间戳之后发布的天气数据? -
在初始阶段,我更关注 A 中时间戳之前的最新天气数据。但如果可能的话,我也有兴趣借用你的大脑进行最近的时间戳练习。谢谢!
标签: r datetime pandas-groupby fuzzy-search