[英]Pandas: align two time series given an “overlapping” region?
我有兩個時間序列,A 和 B。時間序列有不同的長度、不同的日期和不同的頻率。
核心問題是我想找到重疊的兩個時間序列之間的日期。
這很容易做到,但有一個轉折點。
想象時間序列 A 的值是 2020 年 1 月 1 日,而序列 B 的值是 2020 年 2 月 1 日。 這些只相隔一天,除非有更好的候選人(例如,如果 B ALSO 的值是 01/01/02020),我只想包括這個。
所以,真正的轉折是由一個“滯后”組成的,比如 5 天。 然后我想做的是以下內容:
您可以通過在步驟 2 中使用簡單的min
找到 B 中最近的日期來實現此目的
from random import random as r
import random
random.seed(123456)
ts_a = pd.Series([pd.Timestamp(f"{d+1}-jan-2021") for d in range(5)])
base = pd.Timestamp(f"01-jan-2021")
one_day = pd.Timedelta("1D")
ts_b = pd.Series([base + int(10*r())*one_day for _ in range(5)])
print(ts_a)
print(ts_b)
for t in ts_a:
deltas = abs(ts_b - t)
index_closest = deltas.idxmin()
print(f"The closest day to {t} in ts_b is {ts_b.iloc[index_closest]}")
0 2021-01-01
1 2021-01-02
2 2021-01-03
3 2021-01-04
4 2021-01-05
dtype: datetime64[ns]
0 2021-01-09
1 2021-01-08
2 2021-01-01
3 2021-01-02
4 2021-01-01
dtype: datetime64[ns]
The closest day to 2021-01-01 00:00:00 in ts_b is 2021-01-01 00:00:00
The closest day to 2021-01-02 00:00:00 in ts_b is 2021-01-02 00:00:00
The closest day to 2021-01-03 00:00:00 in ts_b is 2021-01-02 00:00:00
The closest day to 2021-01-04 00:00:00 in ts_b is 2021-01-02 00:00:00
The closest day to 2021-01-05 00:00:00 in ts_b is 2021-01-08 00:00:00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.