时间重新索引

时间:2014-03-23 00:24:44

标签: python pandas

我有一个数据框,其日期时间索引具有每小时粒度,其中包含1列值。我想要另一列包含年度粒度值的平均值。

我继续这样做

df = pd.DataFrame(range(8760*2), index=pd.date_range('2015-12-30', freq='H', periods=8760*2))
df1 = df.resample('A', how='mean')
df1.rename(columns={0: 'mean'}, inplace=True)
df1.reindex(df.index, method='bfill').head(48)

我获得了df1的以下结果:

2015-12-31     23.5
2016-12-31   4439.5
2017-12-31  13175.5

这对于rindexing:

2015-12-30 00:00:00    23.5
...
2015-12-30 23:00:00    23.5
2015-12-31 00:00:00    23.5
2015-12-31 01:00:00  4439.5
2015-12-31 02:00:00  4439.5
2015-12-31 03:00:00  4439.5
2015-12-31 04:00:00  4439.5
...
2015-12-31 22:00:00  4439.5
2015-12-31 23:00:00  4439.5

正如您所看到的那样,存在一个问题,因为重建索引会强制执行回填值,直到一年中最后一天的0小时,而不是之后。

有人解决了这个问题吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

df = pd.DataFrame(range(8760*2), dtype='float',
                  index=pd.date_range('2015-12-30', freq='H', periods=8760*2))
df1 = df.groupby(df.index.year).transform('mean')

产量

...
2015-12-31 23:00:00    23.5
2016-01-01 00:00:00  4439.5
...

注意:我将df的dtype更改为float,因此平均值也是dtype float