python - 计算每组前 n 行的总和
问题描述
我想要做的是按列 A 分组,然后取前两行的总和,然后将该值分配为新列。下面的例子:
东风:
ColA ColB
AA 2
AA 1
AA 5
AA 3
BB 9
BB 3
BB 2
BB 12
CC 0
CC 10
CC 5
CC 3
所需的DF:
ColA ColB NewCol
AA 2 3
AA 1 3
AA 5 3
AA 3 3
BB 9 12
BB 3 12
BB 2 12
BB 12 12
CC 0 10
CC 10 10
CC 5 10
CC 3 10
对于 AA,它查看 ColB 并获取前两行的总和并将该总和值分配给 newCol。我通过循环遍历唯一的 ColA 值来创建字典,创建前两行的子集数据框,求和,然后用值填充字典来尝试此操作。然后将字典映射回来 - 但我的数据框非常大,而且需要很长时间。有任何想法吗?
谢谢!
解决方案
您可以使用transform
每行获取一个新值和一个 lambda 函数。在lambda
您可以使用head(2)
获取每个组的前 2 行以及sum()
它们:
df.groupby('ColA')['ColB'].transform(lambda x: x.head(2).sum())
推荐阅读
- structure - String 作为 Union 的成员
- android - RecyclerView / DiffUtils 动画当数据集更改而没有完全刷新
- android - 如何获取 .keystore 文件以生成加密您的私钥
- html - 如何仅使用 CSS 在 div 标签中创建单选按钮
- javascript - ChartJS 均匀分布点
- python - 为 FIN 数据包报告的 bad-tcp-flags,即在 3WHS 之后立即发送
- multithreading - 连接来自不同线程和类的信号和槽
- git - 等效于“git update-index --skip-worktree
“对于未来的贡献者拉? - azure-functions - 如何使用 Postman 调用 Azure AD B2C 保护功能?
- haskell - 函数参数似乎在类型分析中消失了