特定Python累积数

2024-03-28 09:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Pandas开发python数据帧。我需要使用另一个创建特定的数据帧

第一个数据帧如下所示

Index | Value
______|_______
0     | 1.1
0     | 0.3
1     | 1
2     | 0.2
2     | 3
2     | 1.3

我需要使用groupby()和cumsum()创建其他数据帧。我希望cumsum()是一个向量

结果应该如下所示:

Index | Value
______|_______
0     | [1.1 , 1.4]
1     | [1]
2     | [0.2 , 3.2 , 4.5]

但是我找不到一种方法来使用groupby()和cumsum()来正确地实现这一点

有没有人作为线索


2条回答

另一种方法是先设置索引,然后使用两个连续的groupby

df_cumsum = df.set_index('Index').groupby(level=0).cumsum().groupby(level=0).agg(list)

print(df_cumsum)

                            Value
Index                            
0       [1.1, 1.4000000000000001]
1                           [1.0]
2                 [0.2, 3.2, 4.5]

使用自定义lambda函数,并在cumsum之后将序列转换为每个组的列表:

df = df.groupby('Index')['Value'].apply(lambda x: x.cumsum().tolist()).reset_index()
print (df)
   Index                      Value
0      0  [1.1, 1.4000000000000001]
1      1                      [1.0]
2      2            [0.2, 3.2, 4.5]

也可以使用双groupby,在我看来有点过于复杂:

df = (df.assign(Value=df.groupby('Index')['Value'].cumsum())
        .groupby('Index')['Value']
        .apply(list)
        .reset_index())

相关问题 更多 >