首页 > 解决方案 > 熊猫数据框中的计算列

问题描述

我有以下数据框

数据框插图

数据框代码:

df = pd.DataFrame({'Car Type': ['Compact']*9 + ['Economy'],
                  'Supplier':['Alamo','Enterprise','Budget','Nation', 'Avis','Payless','Payless','Payless','E-ZRent-a-Car','E-ZRent-a-Car'],
                  'Total Price':[74]*3+[78,79,84,35,37,43,43],
                  'Location':['Altanta']*10,
                  'Pick-up Date':['Jun/12/2019']*6+['Jun/13/2019']*4,
                  'Date Accessed':['06-11-2019']*10})

我需要创建一个数据框,其中包含“供应商”、“汽车类型”、“取货日期”、“访问日期”的唯一组合列表以及竞争报价的数量和可用的最佳竞争对手价格 1 “取件日期”前 -14 天。

任何帮助,将不胜感激。

标签: pandasdateaggregate

解决方案


国际大学联合会,

您需要先过滤数据框,然后按总价排序并删除重复项。

df[(df['Pick-up Date'] - df['Date Accessed']) < pd.Timedelta(days=14)]\
 .sort_values('Total Price', ascending=False).drop_duplicates(['Car Type', 'Supplier', 
                                                               'Pick-up Date', 'Date Accessed'])

输出:

  Car Type       Supplier  Total Price Location Pick-up Date Date Accessed
5  Compact        Payless           84  Altanta   2019-06-12    2019-06-11
4  Compact           Avis           79  Altanta   2019-06-12    2019-06-11
3  Compact         Nation           78  Altanta   2019-06-12    2019-06-11
0  Compact          Alamo           74  Altanta   2019-06-12    2019-06-11
1  Compact     Enterprise           74  Altanta   2019-06-12    2019-06-11
2  Compact         Budget           74  Altanta   2019-06-12    2019-06-11
8  Compact  E-ZRent-a-Car           43  Altanta   2019-06-13    2019-06-11
9  Economy  E-ZRent-a-Car           43  Altanta   2019-06-13    2019-06-11
7  Compact        Payless           37  Altanta   2019-06-13    2019-06-11

推荐阅读