python - Pandas 按总和滚动分组
问题描述
我有一只熊猫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
我想添加一列,其中包含一列(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
这是如何工作的,我怎样才能在不进行左连接/合并的情况下实现目标?
解决方案
推荐阅读
- docker - 如何在没有“服务容器”的情况下在 Github Workflow 中使用 docker-compose/docker 连接到服务?
- sumologic - 如何计算和比较正则表达式匹配的数量
- php - MAMP 不启动任何服务器
- django - 使用 Nginx 的 Django 主机
- i3 - i3/sway - 如何绑定符号减号和等号
- java - getOutputStream 调用后连接重置
- spring - 如何让浏览器知道从spring服务器下载过程中发生了错误?
- metadata - Ag-grid 列定义和 `__metadata__` 属性
- react-native - 无法在 VS Code 的模拟器上运行我的应用程序
- jmeter - Jmeter beanshell采样器编写多行