gpt4 book ai didi

Python Pandas : Doing cumsum for each day for months

转载 作者:行者123 更新时间:2023-11-30 22:41:30 24 4
gpt4 key购买 nike

我有一个数据框如下

Storeid      Year-Month     Date        Amount
111 01-2016 2016-01-29 10
111 01-2016 2016-01-30 15
111 02-2016 2016-02-03 20
111 02-2016 2016-02-10 17
111 02-2016 2016-02-15 18
111 03-2016 2016-03-02 12
112 01-2016 2016-01-25 14
112 01-2016 2016-01-29 12
...

我想要的输出是这样的

Storeid      Year-Month     Date        Amount
111 01-2016 2016-01-29 10
111 01-2016 2016-01-30 25
111 02-2016 2016-02-03 20
111 02-2016 2016-02-10 37
111 02-2016 2016-02-15 55
111 03-2016 2016-03-02 12
112 01-2016 2016-01-25 14
112 01-2016 2016-01-29 26
...

每个月后都会重置该值,并再次从 0 开始。我尝试从 pandas 执行 cumsum 函数,但是它尝试在整个数据帧中执行此操作。我如何限制它每月执行的操作?

目标是找到“给定日期,哪家商店在该日期达到了当月的销售目标”。销售目标为 1000 美元

最佳答案

您可以执行groupby.cumsum:

df['AmountToDate'] = df.groupby(['Storeid', 'Year-Month']).Amount.cumsum()
df

enter image description here

更新:要提取相应的行,您可以使用groupby.apply(...cumsum..),它允许您执行更多自定义操作:

(df.groupby(['Storeid', 'Year-Month'], as_index=False, group_keys=False)
.apply(lambda g: g.assign(Amount = g.Amount.cumsum())[lambda x: x.Amount >= 25].head(1)))

enter image description here

这是如何工作的?

  • groupby.apply 表示 apply 方法内的 lambda 表达式应用于每个组(此处为 Storeid 和 Year- 的唯一组合)月)分开;
  • 传递给lambda表达式的参数g是一个具有唯一storeid + Year-Month(组变量)的子数据框,为每个数据框计算Amount cumsum,并过滤掉cumsum >的行= 目标并使用 head(1) 获取第一行。

关于Python Pandas : Doing cumsum for each day for months,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42522181/

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