python - Python pandas:在数据透视表上应用滚动总和
问题描述
我使用 pivot_table 命令创建了一个数据框。数据框有 351 行和 120 列。数据框如下所示:
RY 2011 ... 2020
Month 1 2 3 4 5 6 7 8 9 10 ... 3 4 5 6 7 8 9 10 11 12
ID
AB10 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
AB1286 0 0 0 0 2 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
AB1951 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
AB2 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
AB2338 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
现在我想计算 ID 的 12 个月的滚动总和。我编写了以下命令来计算滚动和:
df.groupby('ID').rolling(12,on='Month').sum()
但是,它给出了以下错误:
ValueError: invalid on specified as Month, must be a column (of DataFrame), an Index or None
谁能帮我解决这个问题?
解决方案
在创建数据透视表之前尝试运行该代码。但是,请确保您首先使用以下内容创建日期时间列:
df['Date'] = pd.to_datetime(df['Year'].astype(str) + '-' + df['Month'].astype(str) + '-01')
接着:
df.groupby('ID').rolling(12,on='Date').sum()
推荐阅读
- testng - 调试或单元测试时如何单独运行依赖测试
- elasticsearch - 在 ElasticSearch 中比较索引中的文档时检测更改
- c# - 将对象列表序列化为没有父对象名称的 JSON
- java - Load only x items in Firebase Recycler Adapter
- html - 将鼠标悬停在 span 上以获取工具提示 div
- git - Git 重命名是否包含在提交中?
- php - Laravel 雄辩的查询并在 OR 条件下加入
- android - Android 错误“android.app.Application 未实现 dagger.android.HasActivityInjector”
- react-native - AWS 放大记住在 React Native 应用程序中登录的用户
- ada - 使用存储管理器分配内存会导致非纯函数 (RM 13.1(22))