python-3.x - 使用 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 总和”,我的意思是我想对所有满足三个条件的销售额求和:
- df_sales.ProductID = df_orders.ProductID,和
- df_sales.StoreID = df_orders.StoreID,和
- 其中 df_sales.Date 属于 df_orders.OrderDate(例如 20190510)和 df_orders['OrderDate' + 'Cover_Days'] (例如 20190510+2 = 20190512)之间的日期范围。
原因是订单数据对于每个唯一的 StoreID + ProductID 组合都有多个条目,每个条目都有不同的(非重叠)日期。
解决方案
推荐阅读
- micronaut - 如何在 Micronaut 的集合中获取带注释的类?
- c# - 用户控制 WPF C#
- javascript - 使用Javascript根据类之间的数字计算值
- python - 用 pandas 计算状态持续时间
- c# - OpenApi 生成器 - 从配置文件传递映射
- firebase - firebase - 限制用户登录 14 天
- r - 结构方程建模
- vuejs3 - 如何在不手动刷新页面的情况下使用 vue 3 composition api 观看和检索 param 的 id 查询数据
- javascript - Puppeter 在当前页面或 iFrame 中查找元素
- apache-kafka - 如何在 Apache Kafka-Connect 服务器中重置源连接器偏移量