python - 从具有验证日期和相关信息的数据框中创建新数据框
问题描述
我相信这已经被问过了,但没有考虑到这些扩展。我有一个数据框,其中包含基于开始日期和结束日期的产品信息和价格:
platform sku start_date end_date price
0 A a 9/5/2019 12/31/9999 19.99
1 A a 10/28/2017 2/20/2018 24.99
2 A a 2/21/2018 8/19/2019 29.99
3 A a 8/20/2019 9/4/2019 24.99
4 A b 7/22/2019 12/31/9999 34.99
5 A c 10/17/2019 12/31/9999 19.99
6 A d 8/31/2019 12/31/9999 34.99
7 A d 10/19/2017 2/8/2018 29.99
8 A d 2/9/2018 7/16/2019 34.99
9 A d 7/17/2019 8/30/2019 39.99
10 B a 7/17/2019 8/30/2019 39.99
我想要这样的东西,不仅可以解释 sku,还可以解释不同的平台 A 和 B。
sku a b c d
start_date
10/19/17 0 0 0 29.99
10/20/17 0 0 0 29.99
10/21/17 0 0 0 29.99
10/22/17 0 0 0 29.99
10/23/17 0 0 0 29.99
10/24/17 0 0 0 29.99
10/25/17 0 0 0 29.99
10/26/17 0 0 0 29.99
10/27/17 0 0 0 29.99
10/28/17 24.99 0 0 29.99
...
6/26/20 19.99 34.99 19.99 34.99
6/27/20 19.99 34.99 19.99 34.99
6/28/20 19.99 34.99 19.99 34.99
6/29/20 19.99 34.99 19.99 34.99
6/30/20 19.99 34.99 19.99 34.99
7/1/20 19.99 34.99 19.99 34.99
目标:我想查看平台 A(可能与 B 相同)的表格,其日期范围从开始日期或结束日期中的最小日期到今天,每条记录的当时价格为 0(不是 NaN) 如果它还不存在。我最终将把它合并到一个过程中,用这个 skus 主分类帐和有效日期不断更新这个新表到我的数据库中。
我想用 python 脚本来执行这个。
谢谢!
解决方案
国际大学联合会,
df['date'] = df[['start_date','end_date']].min(axis=1)
df.pivot_table('price','date','sku', aggfunc='first').fillna(0)
输出:
sku a b c d
date
10/17/19 0.00 0.00 19.99 0.00
10/19/17 0.00 0.00 0.00 29.99
10/28/17 24.99 0.00 0.00 0.00
12/31/99 19.99 34.99 0.00 34.99
2/21/18 29.99 0.00 0.00 0.00
2/9/18 0.00 0.00 0.00 34.99
7/17/19 0.00 0.00 0.00 39.99
8/20/19 24.99 0.00 0.00 0.00
推荐阅读
- windows - Microsoft App 认证过程无法取消
- google-apps-script - Google 工作表将工作表复制到驱动文件夹
- api - 如何在 Delphi 中使用 API Winspool.EnumprinterData?
- excel - 将 Excel 工作表移动到另一个具有不同工作表名称的现有工作簿作为新工作表
- plotly - Plotly: how to sum the "text" values displayed on a bar chart?
- sql - SQL Server union all 不显示所有需要的结果
- mongodb - 如何按关键字搜索 mongodb mongoose ObjectId?
- azure-devops - 当我们将 azure devops 与自托管代理一起使用时的 SonarCloud 问题
- java - 如何以编程方式从 Android Java 序列图像创建视频
- azure-powershell - Azcopy 在通过 powershell 执行时失败