熊猫:扩展重采样窗口

时间:2017-01-06 12:07:46

标签: python pandas

假设我有一个“低频”系列,每2小时有一个数据点,我想将其上采样到1小时的频率。

下面的代码片段中是否有可能让高频信号有24行(而不是23行)?更确切地说,我希望新索引的范围从00:00到23:00,值为NaN(而不是在22:00停止)。

我已经玩了很多选项,但我仍然找不到干净的方法来做到这一点。

import pandas as pd
import numpy as np

low_f = pd.Series(np.random.randn(12), 
               index=pd.date_range(start='01/01/2017', freq='2H', periods=12),
               name='2H').cumsum()

high_f = low_f.resample('1H', ).mean()

print(high_f.tail(1).index)

#Yields DatetimeIndex(['2017-01-01 22:00:00'], dtype='datetime64[ns]', freq='H') 
#I'd like DatetimeIndex(['2017-01-01 23:00:00'], dtype='datetime64[ns]', freq='H') 
#(w/ 24 elements)

1 个答案:

答案 0 :(得分:1)

您可以使用DateTimeIndex.shift方法将日期换1小时(领先)。获取它的旧索引的union和新形成的移位索引。

最后,reindex根据这些索引集合。由于在最后一个索引处不存在NaN的值,因此fill_value将根据其默认high_f.reindex(high_f.index.union(high_f.index.shift(1, 'H'))) 参数填充它们。

first.Sort();
second.Sort();


int idx = 0;
int lastIdx = 0;
for (int i = 0; i < first.Count; i++) {
  for (int j = idx; j < second.Count; j++)
  {
    if (first[i] == second[j])
    {
      Console.WriteLine("equal " + first[i]);
      idx = j + 1;
      lastIdx = idx;
      break;
    }
  }
  if (idx == second.Count)
    idx = lastIdx;
}