在单独的列条件下熊猫暨



我使用熊猫和暨的问题没有像我期望的那样行事,所以想知道是否有人可以阐明这种工作方式。

我有一个数据框,如下:

|     |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()

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

看起来您拥有所需的大部分。如果您需要0-FLAGS的null值(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

这是您想要的吗?

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

最新更新