python - 在python中的分区上滚动总和
问题描述
代码:
data['rolling_sum'] = data.groupby(['User_id'])['Amount'].rolling().sum()
错误
TypeError: incompatible index of inserted column with frame index
请帮助找出代码中的错误。另一种方法也将受到赞赏。
解决方案
DataFrame.reset_index
与 level=0 一起使用并drop=True
删除第一级MultiIndex
,因为按原始索引值对齐,所以更安全:
data = pd.DataFrame({
'Amount':[5,3,6,9,2,4],
'User_id':list('aababb')
})
data['rolling_sum1'] = data.groupby(['User_id'])['Amount'].rolling(2).sum().reset_index(level=0, drop=True)
如果仅分配 numpy 数组,则可能会错误地添加值:
data['rolling_sum2'] = data.groupby(['User_id'])['Amount'].rolling(2).sum().values
print (data)
Amount User_id rolling_sum1 rolling_sum2
0 5 a NaN NaN
1 3 a 8.0 8.0
2 6 b NaN 12.0
3 9 a 12.0 NaN
4 2 b 8.0 8.0
5 4 b 6.0 6.0
推荐阅读
- reporting-services - 报表生成器聚合函数与 power bi 数据集
- python - 使用 Python 基于百分比机会生成随机数
- java - 依赖管理不适用于多级继承
- qml - 如何通过 id 获得属性列表
- javascript - 如何在节点 js 中检查一个信号播放器 ID 是否有效
- django - 从 Django Admin M2M 关系中过滤相关值
- superset - 超集!导入查询结果时如何插入动态参数?
- python - 如何使用python合并多个excel文件?
- javascript - Three.js - 如何计算弹丸的角度和弹道?
- office-js - 用于捕获取消会议事件的 Outlook 加载项