簡體   English   中英

合並並采樣兩個熊貓時間序列

[英]merge and sample two pandas time series

我有兩個時間序列。 我想將它們合並並asfreq(*, method='pad')結果,限於它們共同共享的時間范圍。

為了說明這一點,假設我這樣定義AB

import datetime as dt
import numpy as np
import pandas as pd

A = pd.Series(np.arange(4), index=pd.date_range(dt.datetime(2017,1,4,10,0,0), 
              periods=4, freq=dt.timedelta(seconds=10)))

B = pd.Series(np.arange(6), index=pd.date_range(dt.datetime(2017,1,4,10,0,7),
              periods=6, freq=dt.timedelta(seconds=3)))

因此,它們看起來像:

# A
2017-01-04 10:00:00    0
2017-01-04 10:00:10    1
2017-01-04 10:00:20    2
2017-01-04 10:00:30    3

# B
2017-01-04 10:00:07    0
2017-01-04 10:00:10    1
2017-01-04 10:00:13    2
2017-01-04 10:00:16    3
2017-01-04 10:00:19    4
2017-01-04 10:00:22    5

我想計算類似:

# combine_and_asfreq(A, B, dt.timedelta(seconds=5))
# timestamp            A   B
2017-01-04 10:00:07    0   0
2017-01-04 10:00:12    1   1
2017-01-04 10:00:17    1   3
2017-01-04 10:00:22    2   5

我怎樣才能做到這一點?

我不確定您要問的是什么,但這是一個有點復雜的方法,該方法首先找到重疊時間,然后創建一個單列數據幀作為5s timedelta的“基本”數據幀。

通過正確設置數據幀開始

start = max(A.index.min(), B.index.min())
end = min(A.index.max(), B.index.max())

df_time = pd.DataFrame({'time': pd.date_range(start,end,freq='5s')})

df_A = A.reset_index()
df_B = B.reset_index()

df_A.columns = ['time', 'value']
df_B.columns = ['time', 'value']

現在我們有以下三個數據框。

DF_A

                 time  value
0 2017-01-04 10:00:00      0
1 2017-01-04 10:00:10      1
2 2017-01-04 10:00:20      2
3 2017-01-04 10:00:30      3

DF_B

                time  value
0 2017-01-04 10:00:07      0
1 2017-01-04 10:00:10      1
2 2017-01-04 10:00:13      2
3 2017-01-04 10:00:16      3
4 2017-01-04 10:00:19      4
5 2017-01-04 10:00:22      5

df_time

                 time
0 2017-01-04 10:00:07
1 2017-01-04 10:00:12
2 2017-01-04 10:00:17
3 2017-01-04 10:00:22

使用merge_asof加入所有三個

pd.merge_asof(pd.merge_asof(df_time, df_A, on='time'), df_B, on='time', suffixes=('_A', '_B'))


                 time  value_A  value_B
0 2017-01-04 10:00:07        0        0
1 2017-01-04 10:00:12        1        1
2 2017-01-04 10:00:17        1        3
3 2017-01-04 10:00:22        2        5

暫無
暫無

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

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