gpt4 book ai didi

python - Groupby 与 TimeGrouper 'backwards'

转载 作者:太空狗 更新时间:2023-10-30 01:27:40 32 4
gpt4 key购买 nike

我有一个包含时间序列的 DataFrame:

rng = pd.date_range('2016-06-01', periods=24*7, freq='H')
ones = pd.Series([1]*24*7, rng)
rdf = pd.DataFrame({'a': ones})

最后一个条目是 2016-06-07 23:00:00。我现在想把它分组,比如说两天,基本上是这样的:

rdf.groupby(pd.TimeGrouper('2D')).sum()

但是,我想从我的最后一个数据点开始向后分组,所以不是得到这个结果:

            a
2016-06-01 48
2016-06-03 48
2016-06-05 48
2016-06-07 24

我更希望这样:

            a
2016-06-01 24
2016-06-03 48
2016-06-05 48
2016-06-07 48

当按 '3D' 分组时:

            a
2016-06-01 24
2016-06-04 72
2016-06-07 72

'4D' 分组时的预期结果是:

            a
2016-06-03 72
2016-06-07 96

我无法通过 closedlabel 等我能想到的所有组合获得此信息。

我怎样才能做到这一点?

最佳答案

因为我主要想按 7 天(也就是一周)进行分组,所以我现在使用这种方法来找到所需的垃圾箱:

from pandas.tseries.offsets import Week

# Let's not make full weeks
hours = 24*6*4
rng = pd.date_range('2016-06-01', periods=hours, freq='H')

# Set week start to whatever the last weekday of the range is
print("Last day is %s" % rng[-1])
freq = Week(weekday=rng[-1].weekday())

ones = pd.Series([1]*hours, rng)
rdf = pd.DataFrame({'a': ones})
rdf.groupby(pd.TimeGrouper(freq=freq, closed='right', label='right')).sum()

这给了我想要的输出

2016-06-25  96
2016-07-02 168
2016-07-09 168

关于python - Groupby 与 TimeGrouper 'backwards',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37866145/

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