将缺少的日期添加到数据框

我的数据可以在给定日期有多个事件,也可以在某个日期没有事件。我把这些事件记录下来,按日期进行计数并绘制它们。然而,当我绘制它们时,我的两个系列并不总是匹配

idx=pd.date_范围(df['simpleDate'].min(),df['simpleDate'].max())
s=df.groupby(['simpleDate']).size()

在上面的代码中,idx成为一个范围,比如说30个日期。2013年1月9日至2013年9月30日
但是,S可能只有25或26天,因为给定日期内没有发生任何事件。然后我得到一个断言错误,因为当我尝试绘制时,大小不匹配:

图,ax=plt.subplot()
ax.bar(idx.to_pydatetime(),s,color='green')

解决这个问题的正确方法是什么?我想从IDX中删除没有值的日期,还是(我更愿意这样做)将缺少的日期以0计数添加到序列中。我希望有一个完整的30天的图表,值为0。如果这种方法是正确的,那么对如何开始有什么建议吗?我需要某种类型的动态reindex功能吗

这里是sdf.groupby(['simpleDate']).size())的一个片段,注意04和05没有条目

09-02-2013 2
09-03-2013    10
09-06-2013     5
09-07-2013     1

您可以使用Series.reindex

将熊猫作为pd导入
idx=pd.日期范围('09-01-2013'、'09-30-2013')
s=pd.系列({'09-02-2013':2,
'09-03-2013': 10,
'09-06-2013': 5,
'09-07-2013': 1})
s、 索引=pd.DatetimeIndex(s.index)
s=s.reindex(idx,填充值=0)
印刷品

屈服

2013-09-01 0
2013-09-02     2
2013-09-03    10
2013-09-04     0
2013-09-05     0
2013-09-06     5
2013-09-07     1
2013-09-08     0
...

发表评论