我有两个数据帧,df1是一些流量数据:
id mtm_id date_p travel_d ut_p travel_t
0 1 2020-11-25 14:50:04 22.206 2.426 53.864
1 1 2020-11-25 15:50:05 22.214 1.578 35.049
2 1 2020-11-25 16:50:05 22.214 1.766 39.227
3 1 2020-11-25 17:50:05 22.206 1.75 38.867
4 1 2020-11-25 18:50:04 22.206 1.533 34.044
... ... ... ... ... ...
7408 1 2021-10-02 19:50:06 22.205 1.502 33.358
7409 1 2021-10-02 20:50:14 22.205 1.37 30.42
7410 1 2021-10-02 21:50:05 22.205 1.342 29.791
7411 1 2021-10-02 22:50:09 22.205 1.296 28.777
7412 1 2021-10-02 23:50:06 22.688 1.196 27.144第二个df2是天气数据:
id date_w temperature pressure humidity clouds wind_speed
0 2017-04-09 16:00:00 281.4 1019 49 Clear : clear sky, 0% 4
1 2017-04-10 22:00:00 7.83 1012 81 Clear : ясно, 0% 3
2 2017-04-11 15:00:00 18 1002 42 Clear : ясно, 0% 9
3 2017-04-11 21:30:00 8.78 1003 93 Rain : дождь, 75% 5
4 2017-04-12 15:30:00 6.25 1002 60 Clouds : слегка облачно, 40% 5
... ... ... ... ... ... ...
7118 2021-10-03 06:17:52 4 1035 61 Clouds : облачно с прояснениями, 63% 2.08
7119 2021-10-03 12:18:14 10 1034 44 Clouds : облачно с прояснениями, 69% 2.1
7120 2021-10-03 18:17:42 5.19 1035 58 Rain : небольшой дождь, 100% 1.9
7121 2021-10-04 00:17:48 3.65 1036 71 Clouds : пасмурно, 98% 1.77
7122 2021-10-04 06:17:20 5.81 1037 71 Clouds : облачно с прояснениями, 55% 2.98数据是独立收集的,因此表中的日期是不同的。为了得到最终的表格,我需要在df1中的每一行中附加最接近日期时间(min(abs( df2 _p-date_w))的日期行,以便在时间上匹配(同步)流量和适当的天气数据):
id mtm_id date_p travel_d ut_p travel_t date_w temperature pressure humidity clouds wind_speed我可以用循环的标准方式来做这件事,但是我想知道是否有任何python优雅的方法可以用向量操作来做这件事,而不是一步一步地做(我相信python专家可以做任何事情!))。这也是代码执行速度的问题,这也很重要。
提前感谢。
发布于 2021-11-30 20:04:43
实际上,merge_asof在这种情况下工作得很好,就像科拉伦在上面(Smart algo to merge 2 dataframes on datetime column)所说的那样,所以,解决方案Pandas - how to merge dataframes on datetime column of different format?在这种情况下也可以工作!
https://stackoverflow.com/questions/70152196
复制相似问题