簡體   English   中英

從兩個系列 python pandas 獲取最接近給定時間戳的日期

[英]Get date that is closest to given timestamp from two series python pandas

我有一系列稱為dates的時間戳,如下所示:

1   2021-04-21 09:34:00+00:00
2   2021-04-21 10:30:02+00:00
3   2021-04-21 15:54:00+00:00
4   2021-04-22 18:33:57+00:00
5   2021-04-23 18:48:04+00:00

我正在嘗試從另一個名為PublishTime的系列中找到最接近的日期,該系列包含 6 天時間段的詳細數據,涵蓋了一些時間戳。 日期必須在時間戳之后,不能在之前。 一個示例如下所示:

0   2021-04-21 09:30:00
1   2021-04-21 09:31:00
2   2021-04-21 09:32:00
3   2021-04-21 09:33:00
4   2021-04-21 09:34:00

有沒有一種簡單的方法可以快速找到最近的日期? 我查看了datetime模塊,但找不到答案。

編輯我錯誤地說日期列涵蓋了所有時間戳。 在我試圖與之匹配的第二個系列中,沒有周末和非營業時間的分鍾數據,因此我想在時間戳之后找到最接近的日期,而不是之前。

感謝@Quang Hoang,merge_asof 工作。 由於它對我來說也是新的,所以我嘗試了一下,結果如下。

首先從問題中獲取df並重新格式化類型以匹配“PublishTime”系列中的類型

df = pd.DataFrame({'dates': ["2021-04-21 09:34:00+00:00", "2021-04-21 10:30:02+00:00", "2021-04-21 15:54:00+00:00", "2021-04-22 18:33:57+00:00", "2021-04-23 18:48:04+00:00"]})
df['dates'] = pd.to_datetime(df['dates'])
df['dates'] = df['dates'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['dates'] = pd.to_datetime(df['dates'])
df

dates
0   2021-04-21 09:34:00
1   2021-04-21 10:30:02
2   2021-04-21 15:54:00
3   2021-04-22 18:33:57
4   2021-04-23 18:48:04

獲取 PublishTime 系列中的 df

df2 = pd.DataFrame({'PublishTime': ["2021-04-21 09:33:00", "2021-04-21 09:34:00", "2021-04-21 09:35:00", "2021-04-21 10:31:00", "2021-04-21 15:56:00", "2021-04-25 15:56:00", "2021-04-26 15:56:00"]})
df2['PublishTime'] = pd.to_datetime(df2['PublishTime'])
df2

PublishTime
0   2021-04-21 09:33:00
1   2021-04-21 09:34:00
2   2021-04-21 09:35:00
3   2021-04-21 10:31:00
4   2021-04-21 15:56:00
5   2021-04-25 15:56:00
6   2021-04-26 15:56:00

最后,merge_asof 並使用forward作為方向。

pd.merge_asof(df, df2, left_on='dates', right_on='PublishTime', direction='forward')

     dates                  PublishTime
0   2021-04-21 09:34:00 2021-04-21 09:34:00
1   2021-04-21 10:30:02 2021-04-21 10:31:00
2   2021-04-21 15:54:00 2021-04-21 15:56:00
3   2021-04-22 18:33:57 2021-04-25 15:56:00
4   2021-04-23 18:48:04 2021-04-25 15:56:00

如您所見,在 PublishTime 系列中,我沒有添加 4 月 22 日至 24 日的數據以顯示某些數據可能會丟失(如周末),然后在 25 日使用了下一個最接近的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM