小编rin*_*spy的帖子

在其他列定义的窗口内累积应用

我试图将一个函数累加应用于位于'start'和'finish'列定义的窗口内的值.因此,'start'和'finish'定义值为'active'的区间; 对于每一行,我想得到当时所有"活动"值的总和.

这是一个"强力"的例子,它完成了我所追求的目标 - 是否有更优雅,更快速或更高效的内存方式?

df = pd.DataFrame(data=[[1,3,100], [2,4,200], [3,6,300], [4,6,400], [5,6,500]],
    columns=['start', 'finish', 'val'])
df['dummy'] = 1
df = df.merge(df, on=['dummy'], how='left')
df = df[(df['start_y'] <= df['start_x']) & (df['finish_y'] > df['start_x'])]
val = df.groupby('start_x')['val_y'].sum()
Run Code Online (Sandbox Code Playgroud)

最初,df是:

  start  finish  val
0   1      3     100
1   2      4     200
2   3      6     300
3   4      6     400
4   5      6     500
Run Code Online (Sandbox Code Playgroud)

我追求的结果是:

1   100
2   300
3   500
4   700
5   1200
Run Code Online (Sandbox Code Playgroud)

python pandas

10
推荐指数
2
解决办法
205
查看次数

标签 统计

pandas ×1

python ×1