如何向pandas.TimeGrouper添加填充

时间:2017-02-03 21:17:16

标签: python pandas time-series

以下是数据:

date
2016-03-23    hiit
2016-03-30    hiit
2016-04-20    hiit
2016-08-24    hiit
2016-09-04    hiit
2016-10-19    hiit
2016-10-24    hiit
2016-11-07    hiit
2016-11-24    hiit
2016-12-01    hiit
2016-12-04    hiit
2016-12-15    hiit

当我按月使用

对它们进行分组时

df.groupby(pd.TimeGrouper('MS')).count()

现实:

date
2016-03-01    2
2016-04-01    1
2016-05-01    0
2016-06-01    0
2016-07-01    0
2016-08-01    1
2016-09-01    1
2016-10-01    2
2016-11-01    2
2016-12-01    3

所需(数据从2016-01-01开始)

date
2016-01-01    2
2016-02-01    2
2016-03-01    2
2016-04-01    1
2016-05-01    0
2016-06-01    0
2016-07-01    0
2016-08-01    1
2016-09-01    1
2016-10-01    2
2016-11-01    2
2016-12-01    3

如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

重新索引:

r = df.groupby(pd.TimeGrouper('MS')).count()
r.reindex(pd.date_range('2016-1-1', periods=12, freq='MS'), method='bfill')
Out[413]: 
            data
2016-01-01     2
2016-02-01     2
2016-03-01     2
2016-04-01     1
2016-05-01     0
2016-06-01     0
2016-07-01     0
2016-08-01     1
2016-09-01     1
2016-10-01     2
2016-11-01     2
2016-12-01     3