从单独数据帧pandas中最近的时间戳中提取信息

2024-06-28 11:55:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,一个是固定位置浮标的连续数据(每15秒采集一次),另一个是不同时间间隔在不同地点采集的观测数据。两者在各自的数据帧中都有一致的时间戳。对于每个观察,我需要获取观察的时间戳,并在连续数据帧中找到最近的时间戳,从该行提取信息,并将其添加到观察中。我很难找到一种方法,在我的系列连续数据中找到最接近的时间戳。在

观测数据:

   counter    depth  latdeg   latmin     latdec  londeg  lonmin    ts
0      100001   21.110      72  18.5412  72.309020    -148 -47.071 2018-03-20 17:21:49+01:00
1      100002   22.140      72  18.5448  72.309080    -148 -47.0785 2018-03-20 17:22:07+01:00
2      100003   45.300      72  18.5396  72.308993    -148 -47.0936 2018-03-20 17:34:38+01:00
3      100004   45.310      72  18.5360  72.308933    -148 -47.0974 2018-03-20 17:36:31+01:00

连续数据:

^{pr2}$

例如,我想取obs[0]['ts']并找到cont['time']中最近时间的索引,即4167,然后将lat long和alt追加到观测数据帧中。在


Tags: 数据方法信息间隔counter时间地点depth
1条回答
网友
1楼 · 发布于 2024-06-28 11:55:02

您正在寻找pandas.merge_asof

它允许您在不精确的键上连接两个数据帧。在本例中,您希望将它与direciton = nearest一起使用,以便根据最接近的两个时间戳进行匹配。在

import pandas as pd

pd.merge_asof(df_obs, df_cont[['lat', 'long', 'alt', 'time']], 
              left_on='ts', right_on='time', direction='nearest')

输出:

^{pr2}$

如果不需要,可以删除time列,我只留下它来说明合并是如何工作的。在

相关问题 更多 >