Python 将总和限制为仅前4行
初学者问题: 我想在我的数据框上创建一个累积和列,但我只希望该列添加前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
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
类型之后应用ingrolling\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
类型之后应用ingrolling\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('-')
谢谢,这正是我解决问题所需要的。非常感谢。谢谢,这正是我解决问题所需要的。非常感谢。