gpt4 book ai didi

python - 在 Pandas 中按日期滚动平均值?

转载 作者:行者123 更新时间:2023-12-04 15:00:24 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Calculate an incremental mean using python pandas

(3 个回答)


8 个月前关闭。




我在下面有一个示例 df:

| date       | group  | price |
|------------|--------|-------|
| 11/25/2020 | cars | 3 |
| 11/25/2020 | trucks | 2 |
| 11/26/2020 | cars | 5 |
| 11/26/2020 | trucks | 2 |
| 11/27/2020 | cars | 3 |
| 11/27/2020 | trucks | 4 |
我的最终目标是按日期获得每个组的滚动累积价格平均值。我想要的输出如下:
| date       | group  | avg_price |
|------------|--------|-----------|
| 11/25/2020 | cars | 3 |
| 11/26/2020 | cars | 4 |
| 11/27/2020 | cars | 3.67 |
| 11/25/2020 | trucks | 2 |
| 11/26/2020 | trucks | 2 |
| 11/27/2020 | trucks | 2.67 |
我最初的想法是用 df.itertuples() 循环遍历 df同时拥有 while loop日期范围,但我无法弄清楚。如果有人对最快的方法有任何提示/建议,将不胜感激,谢谢!

最佳答案

您可以使用 expanding().mean() 对于累积平均值:

df = df.set_index('date').groupby('group').expanding().mean()

# group date price
# cars 11/25/2020 3.000000
# 11/26/2020 4.000000
# 11/27/2020 3.666667
# trucks 11/25/2020 2.000000
# 11/26/2020 2.000000
# 11/27/2020 2.666667
要匹配您的确切输出,请重置索引并重命名 price :
df = df.reset_index().reset_index().rename(columns={'price': 'avg_price'}))

# group date avg_price
# 0 cars 11/25/2020 3.000000
# 1 cars 11/26/2020 4.000000
# 2 cars 11/27/2020 3.666667
# 3 trucks 11/25/2020 2.000000
# 4 trucks 11/26/2020 2.000000
# 5 trucks 11/27/2020 2.666667

关于python - 在 Pandas 中按日期滚动平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67031091/

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