将cumsum限制为仅前4行

时间:2015-05-03 18:16:23

标签: python pandas cumsum

初学者的问题:

我想在我的数据框上创建一个累积和列,但我只希望该列添加前4行(包括当前行)的值。我还需要重新开始计算每个新的' Type'在框架中。

这就是我的目标:

Type    Value    Desired column
  A       1        -
  A       2        -
  A       1        -
  A       1        5
  A       2        6
  A       2        6
  B       2        -
  B       2        -
  B       2        -
  B       2        8
  B       1        7
  B       1        6

1 个答案:

答案 0 :(得分:4)

您可以在我们apply类型之后rolling_sum groupby来执行此操作。例如:

>>> df["sum4"] = df.groupby("Type")["Value"].apply(lambda x: pd.rolling_sum(x,4))
>>> df
   Type  Value  sum4
0     A      1   NaN
1     A      2   NaN
2     A      1   NaN
3     A      1     5
4     A      2     6
5     A      2     6
6     B      2   NaN
7     B      2   NaN
8     B      2   NaN
9     B      2     8
10    B      1     7
11    B      1     6

pandas使用NaN来表示缺失的数据;如果你真的想要-,你也可以使用

df["sum4"] = df["sum4"].fillna('-')