擅长:python、mysql、java
<p>如果数据集不太大,可以使用selfjoin:</p>
<pre><code>df[['startdate','enddate']] = df[['startdate','enddate']].apply(pd.to_datetime)
df['output'] = (df.merge(df, on='ownerId', suffixes=('','_y'))
.query('startdate <= enddate_y <= enddate')
.groupby('id')['value_y']
.sum()
.to_numpy())
print(df)
</code></pre>
<p>输出:</p>
<pre><code> id enddate startdate ownerId value output
0 1 2019-10-05 2019-10-05 10 105 105
1 2 2019-10-06 2019-10-05 10 240 345
2 3 2019-10-07 2019-10-05 10 420 765
3 4 2019-10-08 2019-10-08 10 470 470
4 5 2019-10-01 2019-10-01 11 320 320
5 6 2019-10-02 2019-10-01 11 18 338
6 7 2019-10-10 2019-10-10 12 50 50
7 8 2019-10-12 2019-10-10 12 412 462
8 9 2019-10-14 2019-10-10 12 398 860
9 10 2019-10-15 2019-10-12 12 320 1130
</code></pre>