Python 基于另一列重置累积和
有许多与条件累积和(,)相关的查询和回答。但我无法解决我面临的问题。以下是我拥有的部分数据,要求记录“类型”的变化和相应的累计金额Python 基于另一列重置累积和,python,pandas,cumulative-sum,Python,Pandas,Cumulative Sum,有许多与条件累积和(,)相关的查询和回答。但我无法解决我面临的问题。以下是我拥有的部分数据,要求记录“类型”的变化和相应的累计金额 type sale y 10 y 20 y 5 n 30 n 20 n 5 y 10 y 40 y 15 我的要求是得到一个类型和累计销售变化的序列计数,如下所示 type sale tp_
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()
输出:
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
我假设在行上循环效率太低,或者有其他原因反对这样做?您也可以,
df.groupby((df.type!=df.type.shift(1)).cumsum())['sale'].cumsum()
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