熊猫cumsum在一个单独的柱条件

时间:2017-03-07 22:16:43

标签: python pandas

我有一个使用Pandas和cumsum的问题,这不符合我的预期,所以想知道是否有人可以阐明它是如何工作的。

我的数据框如下所示:

|     |price    |flag  |cum_sum  |
|-----|---------|------|---------|
|0    |2        |1     |2        |
|1    |5        |1     |7        |
|2    |8        |1     |15       |
|3    |9        |0     |0        |
|4    |12       |0     |0        |
|5    |2        |1     |17       |

目前代码如下:

df['cum_sum'] = df.groupby(by=['flag','price']).sum().groupby(level=[1]).cumsum()

我只希望它总结一个指定标志的列。我觉得这应该很简单,但我错过了一些基本的东西。数据集很大,所以没有寻找任何循环或迭代答案。

2 个答案:

答案 0 :(得分:1)

看起来你拥有自己想要的大部分内容。如果你想要0标志的空值(NaN),那么这样做:

df['cum_sum'] = df[df['flag'] == 1]['price'].cumsum()

flag price cum_sum 0 1 2 2.0 1 1 5 7.0 2 1 8 15.0 3 0 9 NaN 4 0 12 NaN 5 1 2 17.0

答案 1 :(得分:0)

这是你想要的吗?

In [15]: df.price.mul(df.flag).cumsum().mul(df.flag)
Out[15]:
0     2
1     7
2    15
3     0
4     0
5    17
dtype: int64