根据另一个数据框中的日期计算一个数据框的数量之和(Python)



假设我有一个这样的第一个df:

df1:

item     date1         date2
1    2020-06-21    2020-06-28
2    2020-05-13    2020-05-24
3    2020-06-20    2020-06-28

我还有第二个df (df2),其中包含项目,日期和数量

df2:

item     quantity       date
1         5        2020-06-24
1         8        2020-06-20
1         12       2020-06-27
1         9        2020-06-29
2         10       2020-05-24
2         11       2020-05-15
2         18       2020-05-18
2         9        2020-05-14
3         7        2020-06-18
3         12       2020-06-21
3         13       2020-06-24
3         8        2020-06-28

现在我想求和df2中日期位于date1和date2列之间的数量。所以我的结果是:

df3:

item     date1         date2        sum
1    2020-06-21    2020-06-28     17
2    2020-05-13    2020-05-24     48
3    2020-06-20    2020-06-28     33

我已经写了一段时间了,我真的很想避免循环。

是否有一种有效的方法来获得期望的结果??

df = df2.merge(df1, on = 'item', how = 'left')
df[['date', 'date1', 'date2']] = df[['date', 'date1', 'date2']].apply(pd.to_datetime)
df = df[ (df['date'] >=df['date1']) & (df['date'] <=df['date2'])]
df = df.groupby(['item','date1','date2']).agg({'quantity':'sum'}).reset_index()

输出:

item  date1        date2    quantity
0   1   2020-06-21  2020-06-28  17
1   2   2020-05-13  2020-05-24  48
2   3   2020-06-20  2020-06-28  33

相关内容

  • 没有找到相关文章

最新更新