首页 > 解决方案 > 使用 Pandas 在唯一标识符上连接两个数据框并在列中指定的日期之间求和

问题描述

我在 Python 3.7 中使用 Pandas 来处理我的数据。

我有两个数据框,df_orders 和 df_sales,如下所示:

df_orders:

StoreID    ProductID    OrderDate    Cover_Days
1234       0009998      20190510     2
1234       0009998      20190512     2
4321       0009998      20190510     2
4321       0087664      20190510     10

df_sales:

StoreID    ProductID    Date        TotalSales
1234       0009998      20190510    10
1234       0009998      20190511    10
4321       0009998      20190511    15
4321       0087664      20190511    50
4321       0087664      20190519    50

我想将 df_sales 加入 StoreID、ProductID 上的 df_orders 以及 OrderDate 到 OrderDate + Cover_Days 范围内的 TotalSales 总和,以便得到结果:

df_result:

StoreID    ProductID    OrderDate    Cover_Days    Sum_TotalSales
1234       0009998      20190510     2             20
1234       0009998      20190512     2             0
4321       0009998      20190510     2             15
4321       0087664      20190510     10            100

df_sales 数据框每天有大约 500 万行的销售量,因此一个有效的答案显然更可取!

想法?

编辑:

通过“从 OrderDate 到 OrderDate + Cover_Days 范围内的 TotalSales 总和”,我的意思是我想对所有满足三个条件的销售额求和:

  1. df_sales.ProductID = df_orders.ProductID,和
  2. df_sales.StoreID = df_orders.StoreID,和
  3. 其中 df_sales.Date 属于 df_orders.OrderDate(例如 20190510)和 df_orders['OrderDate' + 'Cover_Days'] (例如 20190510+2 = 20190512)之间的日期范围。

原因是订单数据对于每个唯一的 StoreID + ProductID 组合都有多个条目,每个条目都有不同的(非重叠)日期。

标签: python-3.xpandasmergesumdate-range

解决方案


推荐阅读