我试图将一个函数累加应用于位于'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)