通过用0

时间:2016-09-04 11:25:03

标签: python pandas resampling

我有一个pandas数据框,如下所示,我有月 - 年,需要获取连续数据帧,如果没有找到该月的行,则应将count包括为0。输出的输出如下所示。

输入数据框

Month   | Count
--------------
Jan-15  | 10
Feb-15  | 100
Mar-15  | 20
Jul-15  | 10
Sep-15  | 11 
Oct-15  | 1 
Dec-15  | 15

预期产出

Month   | Count
--------------
Jan-15  | 10
Feb-15  | 100
Mar-15  | 20
Apr-15  | 0
May-15  | 0
Jun-15  | 0
Jul-15  | 10
Aug-15  | 0
Sep-15  | 11 
Oct-15  | 1
Nov-15  | 0 
Dec-15  | 15

1 个答案:

答案 0 :(得分:2)

您可以将Month列设置为索引。它看起来像Excel输入,如果是这样,它将在01.01.2015进行解析,因此您可以按如下方式对其进行重新取样:

df.set_index('Month').resample('MS').asfreq().fillna(0)
Out: 
            Count
Month            
2015-01-01   10.0
2015-02-01  100.0
2015-03-01   20.0
2015-04-01    0.0
2015-05-01    0.0
2015-06-01    0.0
2015-07-01   10.0
2015-08-01    0.0
2015-09-01   11.0
2015-10-01    1.0
2015-11-01    0.0
2015-12-01   15.0

如果月份列未被识别为日期,则需要先将其转换为:

df['Month'] = pd.to_datetime(df['Month'], format='%b-%y')