每小时重新采样一次具有一定开始时间的TimeSeries

MaM*_*MaM 17 python pandas

我想在某个小时开始每天(恰好24小时)频繁重新采样TimeSeries.

喜欢:

index = date_range(datetime(2012,1,1,17), freq='H', periods=60)

ts = Series(data=[1]*60, index=index)

ts.resample(rule='D', how='sum', closed='left', label='left')
Run Code Online (Sandbox Code Playgroud)

结果我得到:

2012-01-01  7
2012-01-02 24
2012-01-03 24
2012-01-04  5
Freq: D
Run Code Online (Sandbox Code Playgroud)

结果我希望:

2012-01-01 17:00:00 24
2012-01-02 17:00:00 24
2012-01-03 17:00:00 12
Freq: D
Run Code Online (Sandbox Code Playgroud)

几个星期前,你可以传递'24H'freq参数,它的工作完全罚款.但现在它结合起来'24H''1D'.

我使用的'24H'是现在修复的错误吗?我怎样才能以高效和pythonic(或熊猫)的方式获得希望的结果呢?

版本:

  • python 2.7.3
  • pandas 0.9.0rc1(但在0.8.1中也不起作用)
  • numpy 1.6.1

And*_*den 24

Resample有一个base论据涵盖了这种情况:

ts.resample(rule='24H', closed='left', label='left', base=17).sum()
Run Code Online (Sandbox Code Playgroud)

输出:

2012-01-01 17:00:00    24
2012-01-02 17:00:00    24
2012-01-03 17:00:00    12
Freq: 24H
Run Code Online (Sandbox Code Playgroud)


Cor*_*mer 7

2021 更新:base自版本 1.1.0 起已弃用:您应该使用的新参数是 \xe2\x80\x98offset\xe2\x80\x99 或 \xe2\x80\x98origin\xe2\x80\x99。

\n
df.resample(\'24H\',\n origin=datetime(2012,1,1,17) # <--  ADD THIS\n).sum() \n
Run Code Online (Sandbox Code Playgroud)\n

1.1.0版本新增

\n

origin {\xe2\x80\x98epoch\xe2\x80\x99, \xe2\x80\x98start\xe2\x80\x99, \xe2\x80\x98start_day\xe2\x80\x99},时间戳或 str,默认 \xe2\ x80\x98start_day\xe2\x80\x99\n调整分组的时间戳。来源时区必须与索引时区匹配。如果不使用时间戳,则还支持这些值:

\n
    \n
  • \xe2\x80\x98epoch\xe2\x80\x99:原点是 1970-01-01
  • \n
  • \xe2\x80\x98start\xe2\x80\x99:原点是时间序列的第一个值
  • \n
  • \xe2\x80\x98start_day\xe2\x80\x99:原点是时间序列午夜的第一天
  • \n
\n