如何在熊猫中重新采样DatetimeIndex?

时间:2020-05-14 15:48:11

标签: pandas

如何在熊猫中对DatetimeIndex个对象进行重新采样?假设我有一些名为DatetimeIndex的{​​{1}}对象。我想拥有一个索引,如果我运行它将成为结果:

oldindex

但是此解决方案进行了不必要的计算(即构造了一个序列并计算了总和),而且看起来很丑。不幸的是,newindex = pd.Series(index=oldindex, data=None).resample('H').sum().index 无法正常工作,尽管我看不出任何原因或类似原理在原则上无法正常工作。对于重新采样索引,操作(求和,均值,填充...)将无关紧要。

1 个答案:

答案 0 :(得分:0)

重新采样是更改数据,如果您没有要更改的数据,则可以使用所需的频率(覆盖原始范围)创建一个新索引:

>>> oldindex
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
               '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08',
               '2020-01-09', '2020-01-10'],
              dtype='datetime64[ns]', freq='D')
>>> newindex = pd.date_range(start=oldindex[0], end=oldindex[-1], freq='H')
>>> newindex
DatetimeIndex(['2020-01-01 00:00:00', '2020-01-01 01:00:00',
               '2020-01-01 02:00:00', '2020-01-01 03:00:00',
               '2020-01-01 04:00:00', '2020-01-01 05:00:00',
               '2020-01-01 06:00:00', '2020-01-01 07:00:00',
               '2020-01-01 08:00:00', '2020-01-01 09:00:00',
               ...
               '2020-01-09 15:00:00', '2020-01-09 16:00:00',
               '2020-01-09 17:00:00', '2020-01-09 18:00:00',
               '2020-01-09 19:00:00', '2020-01-09 20:00:00',
               '2020-01-09 21:00:00', '2020-01-09 22:00:00',
               '2020-01-09 23:00:00', '2020-01-10 00:00:00'],
              dtype='datetime64[ns]', length=217, freq='H')

(为清楚起见,您也可以使用oldindex[0]oldindex[-1]代替oldindex.min()oldindex.max()