我会尽量在这个问题上尽可能清楚。假设我的数据框形成为:
Date Quantity
05/05/2017 34
12/05/2017 24
19/05/2017 45
26/05/2017 23
2/06/2017 56
9/06/2017 32
我想将具有每周数据(如您所见)的数据框转换为具有每日数据的数据框。但是,我的数据框中会有一些“漏洞”(例如周末日)。我已经将每日日期存储到另一个变量中。 我想得到这样的东西:
Date Quantity
05/05/2017 34
08/05/2017 34
09/05/2017 34
... ...
2/06/2017 56
5/06/2017 56
6/06/2017 56
... ...
我的想法是设置一个循环,说“每当数据框中的日期早于日期数据框(2017年5月19日),但高于上一个日期(2017年12月12日),我想在每日数据框中追加“数量”列中正确的数字(在本例中为45)。
但是,我不知道如何在Python中执行此操作。我应该将日期转换为数字然后再转换为日期吗?有没有人有更快的方法来做到这一点?非常感谢你
答案 0 :(得分:4)
以下是使用resample
与business day frequency(B)和前向填充的选项:
df['Date'] = pd.to_datetime(df.Date, format='%d/%m/%Y')
df.set_index('Date').resample('B').ffill().reset_index()
# Date Quantity
#0 2017-05-05 34
#1 2017-05-08 34
#2 2017-05-09 34
#...
#20 2017-06-02 56
#21 2017-06-05 56
#22 2017-06-06 56
#...
答案 1 :(得分:2)
如果我们说您的每日数据位于名为days
的变量中,Date
是您的索引,那么
>>>df.reindex(days).fillna(method='ffill')
应该返回你想要的东西。