【问题标题】:Python_Cumulative sum based on two conditions基于两个条件的Python累计和
【发布时间】:2021-04-21 15:13:49
【问题描述】:

我正在尝试根据两个不同的条件在 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

【问题讨论】:

  • 提供一个可重现的示例,以便我们可以复制粘贴它。你在用熊猫吗?

标签: python sum cumulative-sum binning


【解决方案1】:

您在寻找:

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

【讨论】:

  • 您好,感谢您的解决方案。但是,也许将“数字”列一直增加一是一个不好的示例,但事实并非如此。它总是增加,但不一定增加一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2020-11-23
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
相关资源
最近更新 更多