首页 > 解决方案 > 从具有验证日期和相关信息的数据框中创建新数据框

问题描述

我相信这已经被问过了,但没有考虑到这些扩展。我有一个数据框,其中包含基于开始日期和结束日期的产品信息和价格:

    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 脚本来执行这个。

谢谢!

标签: pythonpandasdataframe

解决方案


国际大学联合会,

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

推荐阅读