使用Python

时间:2017-06-15 16:45:57

标签: python pandas dataframe

我会尽量在这个问题上尽可能清楚。假设我的数据框形成为:

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中执行此操作。我应该将日期转换为数字然后再转换为日期吗?有没有人有更快的方法来做到这一点?非常感谢你

2 个答案:

答案 0 :(得分:4)

以下是使用resamplebusiness 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')

应该返回你想要的东西。