[英]How to groupby pandas time-series in interval from now backwards?
我有一個每隔 15 分鍾的財務時間序列。
2022-01-20 03:45:00+00:00 41941.738281
2022-01-20 04:00:00+00:00 41952.324219
2022-01-20 04:15:00+00:00 41945.421875
2022-01-20 04:30:00+00:00 41921.039062
2022-01-20 04:45:00+00:00 41910.382812
2022-01-20 05:00:00+00:00 41921.597656
2022-01-20 05:15:00+00:00 41914.296875
2022-01-20 05:30:00+00:00 41839.437500
2022-01-20 05:45:00+00:00 41873.421875
2022-01-20 06:00:00+00:00 41905.511719
2022-01-20 06:15:00+00:00 41958.675781
2022-01-20 06:30:00+00:00 42010.332031
2022-01-20 06:45:00+00:00 42045.492188
2022-01-20 07:00:00+00:00 42034.050781
2022-01-20 07:15:00+00:00 42010.828125
2022-01-20 07:30:00+00:00 41976.238281
2022-01-20 07:45:00+00:00 42078.578125
2022-01-20 08:00:00+00:00 42071.261719
2022-01-20 08:15:00+00:00 41995.722656
2022-01-20 08:26:00+00:00 41953.441406
Name: Open, dtype: float64
我想要一個 6 小時間隔的摘要。 我希望間隔現在開始。 所以第一個間隔是從現在到現在 - 6 小時。
我知道 Grouper 和 freq 屬性:
df.groupby(pd.Grouper(level=0, freq="6h")).sum()
然而,這帶來了固定的時間間隔:
2022-01-19 12:00:00+00:00 1.011087e+06
2022-01-19 18:00:00+00:00 1.005388e+06
2022-01-20 00:00:00+00:00 1.005184e+06
2022-01-20 06:00:00+00:00 4.620401e+05
date_range function 可以產生我想要的間隔。
pd.date_range(end="now", periods=4, freq="6h")
出去:
DatetimeIndex(['2022-01-19 15:41:08.881073', '2022-01-19 21:41:08.881073',
'2022-01-20 03:41:08.881073', '2022-01-20 09:41:08.881073'],
dtype='datetime64[ns]', freq='6H')
我怎么能按他們分組。
在resample
中使用參數origin
從r
范圍開始時間,如第一個值,如有必要,通過df.index
之前的最大(最后一個)值過濾:
r = pd.date_range(end="now", periods=4, freq="6h")
df[df.index <= r[-1]].resample('6h', origin=r[0]).sum()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.