Python 时间重新索引
我有一个dataframe,它有一个datetime索引,每小时粒度有一列值。我想有另一列,其中包含每年粒度的值的平均值 我就这样做Python 时间重新索引,python,pandas,Python,Pandas,我有一个dataframe,它有一个datetime索引,每小时粒度有一列值。我想有另一列,其中包含每年粒度的值的平均值 我就这样做 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.rein
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小时,而不是之后
有人知道这个问题的解决办法吗
非常感谢
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
的数据类型更改为float
,因此平均值也将是dtypefloat