繁体   English   中英

Python_基于两个条件的累积和

[英]Python_Cumulative sum based on two conditions

我正在尝试根据两个不同的条件计算 python 中的累积和

正如您在附图中看到的那样,只要Cat1Cat2列不变, Calculation列将采用与Number列相同的值。

一旦Cat1列发生变化,我们应该重置Number列。

Calculation列与Number列保持相同,一旦Cat2列更改为Cat1列的相同值, Calculation列将取Number列的最后一个值并将其添加到下一个列。


以下数据示例:

Cat1    Cat2    Number  CALCULATION
a   orange  1   1
a   orange  2   2
a   orange  3   3
a   orange  4   4
a   orange  5   5
a   orange  6   6
a   orange  7   7
a   orange  8   8
a   orange  9   9
a   orange  10  10
a   orange  11  11
a   orange  12  12
a   orange  13  13
b   purple  1   1
b   purple  2   2
b   purple  3   3
b   purple  4   4
b   purple  5   5
b   purple  6   6
b   purple  7   7
b   purple  8   8
b   silver  1   9
b   silver  2   10
b   silver  3   11
b   silver  4   12
b   silver  5   13
b   silver  6   14
b   silver  7   15

在此处输入图像描述

在此处输入图像描述

您是否在寻找:

import pandas as pd
df = pd.DataFrame({'Cat1': ['a','a','a','a','a','a','a','a','a','a','a',  'a','a','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b'],
 'Cat2': ['orange','orange','orange','orange','orange','orange','orange',  'orange','orange','orange','orange','orange','orange','purple','purple',  'purple','purple','purple','purple','purple','purple','silver','silver','silver',  'silver','silver','silver','silver']})

df['Number'] = df.groupby(['Cat1', 'Cat2']).cumcount()+1
df['CALCULATION'] = df.groupby('Cat1').cumcount()+1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM