在有条件的跨行(即具有内存)的大熊猫中运行计算

时间:2019-05-01 19:04:58

标签: python pandas

我需要计算数据框“值”列上的运行总和,但是当相邻的“标签”列更改值时重置总和。然后再次开始累加和。在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个标签,并且我将需要多次运行整个操作,因此它必须高效。

0 个答案:

没有答案