pandas - 在具有多索引的 Pandas DataFrame 中获取累积列表的最快方法,按索引分组
问题描述
所以我有一个看起来像的数据框
column
index1 index2
0 0 10
1 11
2 12
3 13
4 14
1 0 20
1 21
2 22
3 23
4 24
我想获得一个看起来像的数据框
column cumulative
index1 index2
0 0 10 []
1 11 [10]
2 12 [10, 11]
3 13 [10, 11, 12]
4 14 [10, 11, 12, 13]
1 0 20 []
1 21 [20]
2 22 [20, 21]
3 23 [20, 21, 22]
4 24 [20, 21, 22, 23]
我保证索引已排序。如果我存储在cumulative
列中的对象不是 Python 列表而是 Numpy 数组,如果这样可以使实现更高效,我也很好。
基本上,目标是在某些机器学习算法中使用特征结果的完整历史作为其本身的另一个特征。如果这不是推荐的方法,那么请提出另一种方法。
解决方案
可能不是最优雅的:
df.assign(column=df['column'].apply(lambda x: [x])).groupby(level=0).apply(np.cumsum)
column
index1 index2
0 0 [10]
1 [10, 11]
2 [10, 11, 12]
3 [10, 11, 12, 13]
4 [10, 11, 12, 13, 14]
1 0 [20]
1 [20, 21]
2 [20, 21, 22]
3 [20, 21, 22, 23]
4 [20, 21, 22, 23, 24]
推荐阅读
- sql - sys.tables 与 COUNT
- php - 我在 PHP 中收到“警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result”错误
- node.js - 我无法让 NPM Start 在 Visual Code Studio 中工作;它给了我一个我无法理解的错误
- laravel - 为什么 Laravel 没有超时?
- html - 如果我想要两个或三个或四个不同的段落都是单独的颜色怎么办?
- javascript - 在 iOS 上使用 Chrome 重新加载时的视口高度错误
- vue.js - 无法在 Vuejs 上下文中使用 chartjs 中的 API 调用显示图表
- android - 强制 Android WebView 在默认浏览器中打开外部链接
- c# - 验证使用仅初始化设置器初始化的 C# 对象
- javascript - 如何将现有 JSON 中的对象添加到 Node JS 中的空对象