gpt4 book ai didi

python - 根据另一列重置累计总和

转载 作者:行者123 更新时间:2023-12-05 02:51:08 25 4
gpt4 key购买 nike

有许多与条件累积和(Cumsum Reset based on a condition in PandasReset Cumulative sum base on condition PandasCumsum Reset based on a condition in Pandas)相关的查询和答案。但我无法解决我面临的问题。以下是我拥有的部分数据,要求是记录“类型”的变化和相应的累计总和。

  type sale
y 10
y 20
y 5
n 30
n 20
n 5
y 10
y 40
y 15

我的要求是获得如下所示的类型变化和累计销售额的连续计数。

   type sale tp_cum cum_sale
y 10 1 10
y 20 1 30
y 5 1 35
n 30 2 30
n 20 2 50
n 5 2 55
y 10 3 10
y 40 3 50
y 15 3 65

我尝试对下面的代码进行各种修改,但并不完全符合要求。请帮忙。

sales['cum_sale'] = stock.groupby('type')['sale'].cumsum()

数据框:

df = pd.DataFrame([["y",10 ], 
["y",20 ],
["y",5 ],
["n",30 ],
["n",20 ],
["n",5 ],
["y",10 ],
["y",40 ],
["y",15 ]],columns = ["type","sale"])

最佳答案

这是一个选项,您首先创建 tp_cum 列,然后创建 cumsum()

import pandas as pd
import numpy as np

df = pd.DataFrame([["y",10 ],
["y",20 ],
["y",5 ],
["n",30 ],
["n",20 ],
["n",5 ],
["y",10 ],
["y",40 ],
["y",15 ]],columns = ["type","sale"])

df["type2"] = np.cumsum((df["type"] != df["type"].shift(1)))
df["cum_sale"] = df[["sale","type2"]].groupby("type2").cumsum()
df

输出:

    type    sale    type2  cum_sale
0 y 10 1 10
1 y 20 1 30
2 y 5 1 35
3 n 30 2 30
4 n 20 2 50
5 n 5 2 55
6 y 10 3 10
7 y 40 3 50
8 y 15 3 65

关于python - 根据另一列重置累计总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63314106/

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