Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将总和限制为仅前4行_Python_Pandas_Cumsum - Fatal编程技术网

Python 将总和限制为仅前4行

Python 将总和限制为仅前4行,python,pandas,cumsum,Python,Pandas,Cumsum,初学者问题: 我想在我的数据框上创建一个累积和列,但我只希望该列添加前4行(包括当前行)的值。我还需要用帧中的每个新“类型”重新开始计数 这就是我想要的: Type Value Desired column A 1 - A 2 - A 1 - A 1 5 A 2 6 A 2 6 B 2

初学者问题:

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

这就是我想要的:

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

您可以通过
groupby
类型之后应用
ing
rolling\u sum
来执行此操作。例如:

>>> 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
熊猫使用
NaN
表示缺失数据;如果您确实想要
-
,也可以使用

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

您可以通过
groupby
类型之后应用
ing
rolling\u sum
来执行此操作。例如:

>>> 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
熊猫使用
NaN
表示缺失数据;如果您确实想要
-
,也可以使用

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

谢谢,这正是我解决问题所需要的。非常感谢。谢谢,这正是我解决问题所需要的。非常感谢。