我的数据可以在给定日期有多个事件,也可以在某个日期没有事件。我把这些事件记录下来,按日期进行计数并绘制它们。然而,当我绘制它们时,我的两个系列并不总是匹配
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功能吗
这里是s(df.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
...