我需要计算数据框“值”列上的运行总和,但是当相邻的“标签”列更改值时重置总和。然后再次开始累加和。在excel中,这是一个非常简单的公式,但是很难在python / pandas中找到快速的实现。
我有:
df1 = pd.DataFrame({'label': ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c'], 'value': [.1, .5, .2, 2, 1.2, 3.2, 2, 1, 1.1]})
请注意,不同的标签具有不同的计数。
我需要生成另一个数据框,列或序列,如下所示:
df2 = pd.DataFrame({'running_sum': [.1, .6, .8, 2, 3.2, 6.4, 8.4, 1, 2.1]})
我已经看过df.expanding和df.cumsum,但是我想不出一种使用这些方法重置运行总和的方法。
我也尝试过考虑构建数据透视表,将标签旋转到列的方法,但是我没有创建索引以启用数据透视表的方法。在下面的示例中,有NaN,但我需要所有值都为0索引。此外,当我在大型df上尝试此操作时,我收到“不允许负尺寸”错误,我认为这与内存问题有关。
piv = df1.pivot(columns='label')
我的数据帧为151MB,长600万行,带有13,000个标签,并且我将需要多次运行整个操作,因此它必须高效。