python - 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)组成,按date
and分组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
我像疯子一样用谷歌搜索,但我认为我对这个过程的名称缺乏了解。
我自己尝试解决它一无所获,所以我没有相关代码可显示 - 我该怎么做?
解决方案
这是我测试过的一个简短的工作代码,您不必明确地制作副本。
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
推荐阅读
- python - 在 python 中加载相关模型时出现 Unicode 错误
- blazor - 如何在 Blazor 页面模型部分声明中使用不同的基类?
- c - 首先读取和存储 MSB
- reactjs - 在递归中使用 setTimeout 时 setState 变慢
- c# - 如何使用包含点 (.) 的字符串路由参数在客户端 blazor 中路由?
- java - 如何使用 Mockito 模拟带有 json 数据的 POST 请求
- javascript - 如何在输入键按下时启动/停止选取框?
- node.js - 如何在 node-postgres 中捕获 client.connect()?
- python - Pymongo arayfilters 不起作用
- python - 使用 alexnet 和 flow from directory 训练灰度数据集