我有一只熊猫dataframe
:
df = pd.DataFrame(data={'Name':['John', 'John', 'John', 'Jill', 'Jill', 'Jill', 'Jill'],'Score':[1,1, 1,2,2, 2, 2]})
df
Out[168]:
Name Score
0 John 1
1 John 1
2 John 1
3 Jill 2
4 Jill 2
5 Jill 2
6 Jill 2
我想添加一列,其中包含前2个值的滚动总和(如列score
),如下所示:
Out[171]:
Name Score Total
0 John 1 1
1 John 1 2
2 John 1 2
3 Jill 2 2
4 Jill 2 4
5 Jill 2 4
6 Jill 2 4
我尝试了groupby
和rolling
的工作原理,但行顺序与原始dataframe
不同。请注意,Jill
现在是第一个出现的原因,可能是由于某些字母排序所致:
df.groupby('Name')['Score'].rolling(2, min_periods=1).sum()
Out[173]:
Name
Jill 3 2.0
4 4.0
5 4.0
6 4.0
John 0 1.0
1 2.0
2 2.0
Name: Score, dtype: float64
这是如何工作的,如何在不进行leftjoin /之后合并的情况下实现目标?