Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 时间重新索引_Python_Pandas - Fatal编程技术网

Python 时间重新索引

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

我有一个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.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
,因此平均值也将是dtype
float