我有两个带有时间戳的数据帧,需要在最接近的时间值上进行匹配。我的代码目前和我知道如何构建它一样高效。
def Matcher(value,frame2):
frame2['diff'] = frame2['TIME'].apply(lambda row: abs(row - value))
return frame2['diff'].argmin()
frame1['dex'] = frame1['TIME'].apply(lambda row: Matcher(row,frame2)
frame2['dex'] = frame2.index
frame = pd.merge(frame1,frame2,on='dex')
基本上,匹配器函数查找unix时间戳的最接近绝对时间值的索引。然后合并DataFrame。对于较小的数据帧,这是可以的,因为现在数据帧是> 30,000行代码运行时间太长。与155642帧2匹配的31122长帧1运行大约需要45分钟。任何建议都将不胜感激。
___________编辑____________________
以下是数据的一个例子。它没有提供下面评论中解释的实例,因为这很难找到。
print frame1.head(10)
TIME ONE
1 1498074088.26 fb
2 1498074088.28 fb
3 1498074088.30 fb
4 1498074088.32 fb
5 1498074088.34 fb
6 1498074088.36 fb
7 1498074088.38 fb
8 1498074088.40 fb
9 1498074088.42 fb
10 1498074088.44 fb
print frame2.head(10)
TIME ONE
1 1498074088.28 20
2 1498074088.38 01
3 1498074088.48 2a
4 1498074088.58 9e
5 1498074088.68 8c
6 1498074088.78 76
7 1498074088.88 46
8 1498074088.98 51
9 1498074089.07 bd
10 1498074089.17 34