gpt4 book ai didi

python - 时间重建索引

转载 作者:行者123 更新时间:2023-12-01 05:20:03 24 4
gpt4 key购买 nike

我有一个数据框,其中包含每小时粒度的日期时间索引,其中有 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 点,而不是之后。

有人能解决这个问题吗?

提前非常感谢。

最佳答案

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

关于python - 时间重建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com