首页 > 解决方案 > Python - 包含基于条件的其他行总和的新行

问题描述

我有一个dataframe看起来像这样的(还有其他列需要保留但不受影响,它们可以在新行中为空白assetClass = 99):

clientID  date         assetClass   value
10111     01-01-2020   1            10
10111     01-01-2020   2            20
10111     01-01-2020   3            30
10111     02-01-2020   1            15
10111     02-01-2020   2            25
10111     02-01-2020   3            35        

从 1 到 18 有几个客户和资产类别。这是系统的原始输出。

我需要创建一个新的assetClass,称为它99,它由 2 和 3 的总和(实际上是 11-16)组成,按dateand分组clientID,创建dataframe如下所示:

clientID  date         assetClass   value
10111     01-01-2020   1            10
10111     01-01-2020   2            20
10111     01-01-2020   3            30
10111     01-01-2020   99           50
10111     02-01-2020   1            15
10111     02-01-2020   2            25
10111     02-01-2020   3            35
10111     02-01-2020   99           60

我像疯子一样用谷歌搜索,但我认为我对这个过程的名称缺乏了解。

我自己尝试解决它一无所获,所以我没有相关代码可显示 - 我该怎么做?

标签: python

解决方案


这是我测试过的一个简短的工作代码,您不必明确地制作副本。

result = df.loc[df['assetClass'].isin([2,3])].groupby(['clientID','date']).sum() #first select rows from 'assetClass' having values 2 and 3. 
#Then groupby clientID and date and then sum
result['assetClass'] = 99 # equate assetClass to 99
df = df.append(result) # merge this to existing dataframe

推荐阅读