如何有效地为使用pandas的序列中缺少的数据点添加行?

时间:2017-01-09 16:08:23

标签: python pandas

我将以下时间序列数据集作为大熊猫数据框的一天销售数量。

date, sales
20161224,5
20161225,2
20161227,4
20161231,8

现在,如果我必须在此处包含缺少的数据点(即缺少日期)并使用常量值(零)并希望使其看起来如下,我该如何有效地执行此操作(假设数据帧为~50MB )使用熊猫。

date, sales
20161224,5
20161225,2
20161226,0**
20161227,4
20161228,0**
20161229,0**
20161231,8

**缺少已添加到数据框的行。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以首先投放到to_datetimedate,然后set_indexreindex投标indexreset_index的最小值和最大值如有必要,请按strftime更改格式:

df.date = pd.to_datetime(df.date, format='%Y%m%d')
df = df.set_index('date')
df = df.reindex(pd.date_range(df.index.min(), df.index.max()), fill_value=0)
      .reset_index()
      .rename(columns={'index':'date'})
print (df)
        date sales
0 2016-12-24     5
1 2016-12-25     2
2 2016-12-26     0
3 2016-12-27     4
4 2016-12-28     0
5 2016-12-29     0
6 2016-12-30     0
7 2016-12-31     8

最后如果需要更改格式:

df.date = df.date.dt.strftime('%Y%m%d')
print (df)
       date sales
0  20161224     5
1  20161225     2
2  20161226     0
3  20161227     4
4  20161228     0
5  20161229     0
6  20161230     0
7  20161231     8