【发布时间】:2015-09-30 15:42:10
【问题描述】:
这是输入数据框:
id val
0 A 1
1 B 2
2 A -3
3 C 1
4 D 5
5 B 6
6 C -2
我想按 id 对条目进行分组,然后计算到目前为止看到的每个组的最新成员的运行总和。以下是所需输出的样子,并解释了它是如何获得的:
id val out
0 A 1 1
1 B 2 3 (2 + 1)
2 A -3 -1 (-3 + 2)
3 C 1 0 (1+ -3 +2)
4 D 5 5 (5 + 1 + -3 + 2_
5 B 6 9 (6 + 5 + 1 + -3)
6 C -2 6 (-2 + 6 + 5 -3)
这里有一些更详细的解释: 1) id=1 的行有 3=2+1,因为当时你有 2 个组,As 和 Bs,每个组有 1 行,所以你必须从每个组中取出那一行。
2) id=2 的行有 -1=-3+2,因为那时你有 2 个组,As 和 Bs。 As 中的最新行是 2 A -3,而 Bs 中的单个(因此也是最近的)行是 1 B 2,因此您添加了这两行。
3) 在id=6的那一行,你加起来
2 A -3
4 D 5
5 B 6
6 C -2
您从每个组中取出 1 行,那是当时最近的行。
【问题讨论】:
-
为什么第二个值是
3?当 first 的 id 是A而 second 的 id 是B时。 -
好吧,此时,您有 2 组,A 和 B,每组有一排。目标是从每个组中获取最新的行,并且您有 2 个组,每个组有 1 行,因此您为它们添加 val 值并获得 2+1。
标签: python pandas group-by dataframe cumsum