gpt4 book ai didi

python - 获取 DateTimeIndex 周期的平均值,然后将它们重新分配到原始数据框列

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:43 24 4
gpt4 key购买 nike

我有一个可爱的代码,可以列出给定时间索引周期内所有条目的平均值。例如,在具有十年数据的数据框中,它将返回一周中每一天的平均值。我想要做的是以尽可能少的行将这些平均值传播回整个数据帧。

我为计算平均值的代码感到相当自豪。例如,采用包含此数据的数据框(为了方便起见,我列出了“星期几”,因为此值隐含在 datetimeindex 中,并且此列在我自己的数据中不存在):

Datetimeindex   day of week value
2019-01-01 3 60
2019-01-02 4 46
2019-01-03 5 72
2019-01-04 6 16
2019-01-05 7 94
2019-01-06 1 100
2019-01-07 2 41
2019-01-08 3 63
2019-01-09 4 3
2019-01-10 5 52
2019-01-11 6 38
2019-01-12 7 43
2019-01-13 1 22
2019-01-14 2 73
2019-01-15 3 72
2019-01-16 4 30
2019-01-17 5 52
2019-01-18 6 25
2019-01-19 7 28
2019-01-20 1 83
2019-01-21 2 98
2019-01-22 3 9
2019-01-23 4 61
2019-01-24 5 88
2019-01-25 6 54
2019-01-26 7 32
2019-01-27 1 32
2019-01-28 2 41
2019-01-29 3 65
2019-01-30 4 24
2019-01-31 5 92
2019-02-01 6 76
2019-02-02 7 47
2019-02-03 1 80
2019-02-04 2 62

我的代码是这样的:

result = time_series.groupby(time_series.index.weekday).mean()

这为我提供了一周中每一天的平均值的 len(7) 向量,如下所示:

day of week mean
1 63.4
2 63
3 53.8
4 32.8
5 71.2
6 41.8
7 48.8

我只想反转公式并将平均值粘贴回原始源数据框中。以上面的例子为例,期望的结果是:

Datetimeindex   value
2019-01-01 53.8
2019-01-02 32.8
2019-01-03 71.2
2019-01-04 41.8
2019-01-05 48.8
2019-01-06 63.4
2019-01-07 63
2019-01-08 52.56
2019-01-09 30.16
2019-01-10 71.04
2019-01-11 46.96
2019-01-12 39.76
2019-01-13 63.4
2019-01-14 63
2019-01-15 52.56
2019-01-16 30.16
2019-01-17 71.04
2019-01-18 46.96
2019-01-19 39.76
2019-01-20 63.4
2019-01-21 63
2019-01-22 52.56
2019-01-23 30.16
2019-01-24 71.04
2019-01-25 46.96
2019-01-26 39.76
2019-01-27 63.4
2019-01-28 63
2019-01-29 52.56
2019-01-30 30.16
2019-01-31 71.04
2019-02-01 46.96
2019-02-02 39.76
2019-02-03 63.4
2019-02-04 63

感觉应该可以简单的把原来的公式倒过来说:time_series.groupby(time_series.index.weekday) = 结果

但这显然行不通。或者即使可以就地执行 mean() 过程,例如:

result = time_series.groupby(time_series.index.weekday).mean(inplace=True)

result.loc[result.groupby(by=val)] = time_series.groupby(by=val).mean().values

但都不起作用。我很想用单线来做这件事,我觉得很接近,但我就是做不到。你有什么想法吗?

最佳答案

IIUC,这应该行得通

result = time_series.groupby('day of week')['value'].transform('mean')

关于python - 获取 DateTimeIndex 周期的平均值,然后将它们重新分配到原始数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57746259/

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