gpt4 book ai didi

python - 通过 pd.TimeGrouper ('D' 按天聚合每小时时间序列;问题@时间戳00 :00:00 (hour 24)

转载 作者:行者123 更新时间:2023-12-01 03:45:00 26 4
gpt4 key购买 nike

df:

                    hour    rev
datetime
2016-05-01 01:00:00 1 -0.02
2016-05-01 02:00:00 2 -0.01
2016-05-01 03:00:00 3 -0.02
2016-05-01 04:00:00 4 -0.02
2016-05-01 05:00:00 5 -0.01
2016-05-01 06:00:00 6 -0.03
2016-05-01 07:00:00 7 -0.10
2016-05-01 08:00:00 8 -0.09
2016-05-01 09:00:00 9 -0.08
2016-05-01 10:00:00 10 -0.10
2016-05-01 11:00:00 11 -0.12
2016-05-01 12:00:00 12 -0.14
2016-05-01 13:00:00 13 -0.17
2016-05-01 14:00:00 14 -0.16
2016-05-01 15:00:00 15 -0.15
2016-05-01 16:00:00 16 -0.15
2016-05-01 17:00:00 17 -0.17
2016-05-01 18:00:00 18 -0.16
2016-05-01 19:00:00 19 -0.18
2016-05-01 20:00:00 20 -0.17
2016-05-01 21:00:00 21 -0.14
2016-05-01 22:00:00 22 -0.16
2016-05-01 23:00:00 23 -0.08
2016-05-02 00:00:00 24 -0.06

df.reset_index().to_dict('rec'):

[{'datetime': Timestamp('2016-05-01 01:00:00'), 'hour': 1L, 'rev': -0.02},
{'datetime': Timestamp('2016-05-01 02:00:00'), 'hour': 2L, 'rev': -0.01},
{'datetime': Timestamp('2016-05-01 03:00:00'), 'hour': 3L, 'rev': -0.02},
{'datetime': Timestamp('2016-05-01 04:00:00'), 'hour': 4L, 'rev': -0.02},
{'datetime': Timestamp('2016-05-01 05:00:00'), 'hour': 5L, 'rev': -0.01},
{'datetime': Timestamp('2016-05-01 06:00:00'), 'hour': 6L, 'rev': -0.03},
{'datetime': Timestamp('2016-05-01 07:00:00'), 'hour': 7L, 'rev': -0.1},
{'datetime': Timestamp('2016-05-01 08:00:00'), 'hour': 8L, 'rev': -0.09},
{'datetime': Timestamp('2016-05-01 09:00:00'), 'hour': 9L, 'rev': -0.08},
{'datetime': Timestamp('2016-05-01 10:00:00'), 'hour': 10L, 'rev': -0.1},
{'datetime': Timestamp('2016-05-01 11:00:00'), 'hour': 11L, 'rev': -0.12},
{'datetime': Timestamp('2016-05-01 12:00:00'), 'hour': 12L, 'rev': -0.14},
{'datetime': Timestamp('2016-05-01 13:00:00'), 'hour': 13L, 'rev': -0.17},
{'datetime': Timestamp('2016-05-01 14:00:00'), 'hour': 14L, 'rev': -0.16},
{'datetime': Timestamp('2016-05-01 15:00:00'), 'hour': 15L, 'rev': -0.15},
{'datetime': Timestamp('2016-05-01 16:00:00'), 'hour': 16L, 'rev': -0.15},
{'datetime': Timestamp('2016-05-01 17:00:00'), 'hour': 17L, 'rev': -0.17},
{'datetime': Timestamp('2016-05-01 18:00:00'), 'hour': 18L, 'rev': -0.16},
{'datetime': Timestamp('2016-05-01 19:00:00'), 'hour': 19L, 'rev': -0.18},
{'datetime': Timestamp('2016-05-01 20:00:00'), 'hour': 20L, 'rev': -0.17},
{'datetime': Timestamp('2016-05-01 21:00:00'), 'hour': 21L, 'rev': -0.14},
{'datetime': Timestamp('2016-05-01 22:00:00'), 'hour': 22L, 'rev': -0.16},
{'datetime': Timestamp('2016-05-01 23:00:00'), 'hour': 23L, 'rev': -0.08},
{'datetime': Timestamp('2016-05-02 00:00:00'), 'hour': 24L, 'rev': -0.06}]

df.set_index('datetime', inplace=True)

我想按汇总数据。所以我这样做:

dfgrped = df.groupby([pd.TimeGrouper('D')])

我想计算总和之类的统计数据:

dfgrped.agg(sum)

hour rev
datetime
2016-05-01 276 -2.43
2016-05-02 24 -0.06

正如您所看到的,2016-05-012016-05-02 发生了聚合。

请注意,df 中最后一次每小时数据输入发生在 2016-05-02 00:00:00,这意味着前一天最后一小时的数据,即每天的 24 小时数据点。

但是,考虑到日期时间戳,事情并没有按照我的预期进行。我希望聚合 2016-05-01 的所有 24 小时。

我想,当在一小时结束时进行测量时,此类问题在各种应用中一定经常出现。直到最后一小时(发生在第二天的 00:00:00 时间戳)之前,这不是问题。

如何在 pandas 中解决这个问题?

最佳答案

它看起来像另一个黑客,但它应该可以完成工作:

In [79]: df.assign(t=df.datetime - pd.Timedelta(hours=1)).drop('datetime',1).groupby(pd.TimeGrouper('D', key='t')).sum()
Out[79]:
hour rev
t
2016-05-01 300 -2.49

关于python - 通过 pd.TimeGrouper ('D' 按天聚合每小时时间序列;问题@时间戳00 :00:00 (hour 24),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39065034/

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