Pandas 在数据帧中使用公式的有效方法

Pandas 在数据帧中使用公式的有效方法,pandas,Pandas,我正在尝试根据公式向数据帧添加列。我认为我目前的解决方案不是很有效率。所以我在寻找更快的选择 我有一张三栏的桌子 如何提高公式步骤的效率 在我看来,这就像一个分组操作。也就是说,在每个“段”组中,您希望对该组应用一些操作 这里有一种方法可以执行上面的计算,使用分组方式和每组中的一些累积总和: import numpy as np def cumulate(group): cuml = 0.5 * np.cumsum(group) return cuml + cuml.shift

我正在尝试根据公式向数据帧添加列。我认为我目前的解决方案不是很有效率。所以我在寻找更快的选择

我有一张三栏的桌子


如何提高公式步骤的效率

在我看来,这就像一个分组操作。也就是说,在每个“段”组中,您希望对该组应用一些操作

这里有一种方法可以执行上面的计算,使用分组方式和每组中的一些累积总和:

import numpy as np

def cumulate(group):
    cuml = 0.5 * np.cumsum(group)
    return cuml + cuml.shift(1).fillna(0)

df['cumseglen'] = df.groupby('seg')['len'].apply(cumulate)
print(df)
结果是:

   seg  reach   len  cumseglen
0    1      1  20.0       10.0
1    1      2  50.0       45.0
2    1      3  30.0       85.0
3    2      1  30.0       15.0
4    2      2  40.0       50.0
5    2      3  30.0       85.0

从算法上讲,这与您所写的不完全相同,但假设“reach”列从“seg”列所指示的每个新段开头的1开始,这应该可以工作。

谢谢!这是有道理的。
   seg  reach   len  cumseglen
0    1      1  20.0       10.0
1    1      2  50.0       45.0
2    1      3  30.0       85.0
3    2      1  30.0       15.0
4    2      2  40.0       50.0
5    2      3  30.0       85.0