假设我有一个“低频”系列,每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)
答案 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;
}