【问题标题】:How to groupby pandas time-series in interval from now backwards?如何从现在向后按时间间隔分组熊猫时间序列?
【发布时间】:2022-01-20 08:42:03
【问题描述】:

我有一个每隔 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 函数可以产生我想要的区间。

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')

我怎么能按他们分组。

【问题讨论】:

  • 你试过df.resample('6H', origin=pd.Timestamp.now(tz='utc')).sum()吗?

标签: python pandas time-series


【解决方案1】:

使用resample 中的参数originr 范围(如第一个值)开始时间,如有必要,通过df.index 之前的最大(最后一个)值过滤:

r = pd.date_range(end="now", periods=4, freq="6h")
df[df.index <= r[-1]].resample('6h', origin=r[0]).sum() 

【讨论】:

  • 谢谢,但是我不知道你为什么使用 df.index
猜你喜欢
  • 2014-11-17
  • 1970-01-01
  • 2021-12-01
  • 2023-03-16
  • 1970-01-01
  • 2019-01-02
  • 2014-02-19
  • 2021-05-07
  • 1970-01-01
相关资源
最近更新 更多