相关疑难解决方法(0)

我可以在熊猫中执行动态cumsum行吗?

如果我有以下数据帧,那么派生如下: df = pd.DataFrame(np.random.randint(0, 10, size=(10, 1)))

    0
0   0
1   2
2   8
3   1
4   0
5   0
6   7
7   0
8   2
9   2
Run Code Online (Sandbox Code Playgroud)

是否有一种有效的方式cumsum具有限制的行,每次达到此限制,以启动新的cumsum.达到每个限制(但行数很多)后,将使用总库存创建一行.

下面我创建了一个执行此操作的函数示例,但它非常慢,尤其是当数据框变得非常大时.我不喜欢我的功能是循环,我正在寻找一种方法来使它更快(我猜一种没有循环的方式).

def foo(df, max_value):
    last_value = 0
    storage = []
    for index, row in df.iterrows():
        this_value = np.nansum([row[0], last_value])
        if this_value >= max_value:
            storage.append((index, this_value))
            this_value = 0
        last_value = this_value
    return storage
Run Code Online (Sandbox Code Playgroud)

如果你像我这样朗读我的函数:foo(df, 5) 在上面的上下文中,它返回:

   0
2  10
6  8
Run Code Online (Sandbox Code Playgroud)

python performance pandas numba

3
推荐指数
2
解决办法
228
查看次数

标签 统计

numba ×1

pandas ×1

performance ×1

python ×1