python數據處理——匹配最近的時間戳

題 pandas.merge:匹配最近的時間戳> =時間戳系列

我有兩個數據幀,兩個數據幀都包含一個不規則間隔的毫秒分辨率時間戳列。我的目標是匹配行,以便對於每個匹配的行,1)第一個時間戳總是小於或等於第二個時間戳,2)匹配的時間戳對於滿足1)的所有時間戳對最接近

 

關鍵函數名稱位searchsort(),這是一個在numpy下的函數,使用的方法如下所示:

import pandas as pd
import numpy as np
np.random.seed(0)

base = np.array(["2013-01-01 00:00:00"], "datetime64[ns]")

a = (np.random.rand(30)*1000000*1000).astype(np.int64)*1000000
t1 = base + a
t1.sort()

b = (np.random.rand(10)*1000000*1000).astype(np.int64)*1000000
t2 = base + b
t2.sort()

使用 searchsorted() 找到索引 t1 對於每一個 t2

idx = np.searchsorted(t1, t2) - 1
mask = idx >= 0

df = pd.DataFrame({"t1":t1[idx][mask], "t2":t2[mask]})

輸出如下所示:

                         t1                         t2
0 2013-01-02 06:49:13.287000 2013-01-03 16:29:15.612000
1 2013-01-05 16:33:07.211000 2013-01-05 21:42:30.332000
2 2013-01-07 04:47:24.561000 2013-01-07 04:53:53.948000
3 2013-01-07 14:26:03.376000 2013-01-07 17:01:35.722000
4 2013-01-07 14:26:03.376000 2013-01-07 18:22:13.996000
5 2013-01-07 14:26:03.376000 2013-01-07 18:33:55.497000
6 2013-01-08 02:24:54.113000 2013-01-08 12:23:40.299000
7 2013-01-08 21:39:49.366000 2013-01-09 14:03:53.689000
8 2013-01-11 08:06:36.638000 2013-01-11 13:09:08.078000

此外,關於本文中提到的關鍵的函數,這篇文章也有稍微的講解:

https://my.oschina.net/u/3906518/blog/1844187

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章