根据另一个数据框中的日期计算一个数据框的数量总和 (Python)
Calculating the sum of the quantities of one dataframe based on dates in another dataframe (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
假设我有一个这样的第一个 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