在pandas DataFrame中使用多索引(按索引分组)获取累积列表的最快方法

时间:2019-07-15 17:37:42

标签: pandas dataframe pandas-groupby

所以我有一个看起来像这样的数据框

type PickAbility<T> = PickMatching<T, Function>;

我想获得一个看起来像

的数据框
type PersonAbility = PickAbility<Person>;
/*
type PersonAbility = {
    eat: (food: Food) => void;
    walk: (miles: number) => void;
    read: (book: Book) => void;
}
*/

我保证索引已排序。如果我要存储在 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 列中的对象不是Python列表,而是Numpy数组,如果这样做可以使实现更加有效,那么我也很好。

基本上,目标是将某个功能结果的完整历史本身用作某些机器学习算法中的另一个功能。如果不建议这样做,请提出另一种建议。

1 个答案:

答案 0 :(得分:2)

可能不是最优雅的:

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]