【发布时间】:2018-02-16 13:13:23
【问题描述】:
我有租车预订数据,格式如下:
location | day_of_drive | day_of_reservation | number_of_bookings
-------------------------------------------------------------------
foo | 01-01-2015 | 24-12-2014 | 1
foo | 01-01-2015 | 26-12-2014 | 1
foo | 01-01-2015 | 29-12-2014 | 3
foo | 01-01-2015 | 30-12-2014 | 2
foo | 01-01-2015 | 31-12-2014 | 1
foo | 02-01-2015 | 29-12-2014 | 2
foo | 02-01-2015 | 31-12-2014 | 1
foo | 02-01-2015 | 01-01-2015 | 1
bar | 25-06-2016 | 03-07-2016 | 1
.
.
.
我想要填充此数据集以包含 0 次预订的日期。
数据框已经排序,首先是location,然后是day_of_drive,然后是day_of_reservation。
我想要的是一种有效的方法,用零值填充 day_of_reservation 变量在此变量的第一个观察值之间,这对应于此变量的第一次预订 day_of_drive/@987654327 @ pair,和 day_of_drive ,对于给定的一对 location 和 day_of_drive 本身。我遇到了使用 unstacking,然后使用 fillna(0),然后堆叠备份的解决方案,但我认为我不能使用这些,因为每对 location 和 day_of_drive 有不同的最小和最大日期我想要垫在中间。
期望的输出:
location | day_of_drive | day_of_reservation | number_of_bookings
-------------------------------------------------------------------
foo | 01-01-2015 | 24-12-2014 | 1
foo | 01-01-2015 | 25-12-2014 | 0
foo | 01-01-2015 | 26-12-2014 | 1
foo | 01-01-2015 | 27-12-2014 | 0
foo | 01-01-2015 | 28-12-2014 | 0
foo | 01-01-2015 | 29-12-2014 | 3
foo | 01-01-2015 | 30-12-2014 | 2
foo | 01-01-2015 | 31-12-2014 | 1
foo | 02-01-2015 | 29-12-2014 | 2
foo | 02-01-2015 | 30-12-2014 | 0
foo | 02-01-2015 | 31-12-2014 | 1
foo | 02-01-2015 | 01-01-2015 | 1
bar | 25-06-2016 | 03-07-2016 | 1
bar | 25-06-2016 | 04-07-2016 | 0
.
.
.
我觉得解决方案是groupby。
【问题讨论】:
标签: python pandas data-manipulation