gpt4 book ai didi

python - 对于不一致的日期范围,用零填充 pandas groupby

转载 作者:行者123 更新时间:2023-11-30 22:20:32 26 4
gpt4 key购买 nike

我有以下形式的汽车租赁预订数据:

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 次预订的日期。

数据框已排序,首先按位置排序,然后按day_of_drive排序,然后按day_of_reservation排序。

我想要的是一种有效的方法,可以在 day_of_reservation 变量在该变量的第一个观察值之间填充零值,该值对应于该变量的第一次预订 day_of_drive/location 对,以及 day_of_drive ,对于给定的一对 位置 day_of_drive 本身。我遇到过使用拆栈,然后使用 fillna(0),然后堆叠回来的解决方案,但我不认为我可以将它们用作每对 locationday_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

最佳答案

您可以将以下内容与 set_indexgroupbyresample 结合使用:

#First make sure day_of_reservation is a datetime dtype:
df['day_of_reservation'] = pd.to_datetime(df['day_of_reservation'])

df.set_index('day_of_reservation')\
.groupby(['location','day_of_drive'], sort=False)['number_of_bookings']\
.resample('D').asfreq().fillna(0)\
.reset_index()

输出:

      location     day_of_drive day_of_reservation  number_of_bookings
0 foo 01-01-2015 2014-12-24 1.0
1 foo 01-01-2015 2014-12-25 0.0
2 foo 01-01-2015 2014-12-26 1.0
3 foo 01-01-2015 2014-12-27 0.0
4 foo 01-01-2015 2014-12-28 0.0
5 foo 01-01-2015 2014-12-29 3.0
6 foo 01-01-2015 2014-12-30 2.0
7 foo 01-01-2015 2014-12-31 1.0
8 foo 02-01-2015 2014-12-29 2.0
9 foo 02-01-2015 2014-12-30 0.0
10 foo 02-01-2015 2014-12-31 1.0
11 foo 02-01-2015 2015-01-01 1.0
12 bar 25-06-2016 2016-03-07 1.0

关于python - 对于不一致的日期范围,用零填充 pandas groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48827580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com