为pandas数据帧添加缺少日期我的数据可以在给定日期有多个事件,也可以在某个日期没有事件。我参加这些活动,按日期计算并绘制它们。但是,当我绘制它们时,我的两个系列并不总是匹配。idx = pd.date_range(df['simpleDate'].min(), df['simpleDate'].max())s = df.groupby(['simpleDate']).size()在上面的代码中,idx成为30个日期的范围。S 01-01-2013至09-30-2013但是S可能只有25天或26天,因为在给定日期没有发生任何事件。然后,当我尝试绘制时,我得到一个AssertionError,因为大小不匹配:fig, ax = plt.subplots() ax.bar(idx.to_pydatetime(), s, color='green')解决这个问题的正确方法是什么?我是否要删除IDX中没有值的日期或(我宁愿这样做)将系列添加到缺少日期的计数为0.我宁愿拥有30天的完整图表,其中包含0值。如果这种方法是正确的,那么有关如何开始的任何建议?我需要某种动态reindex功能吗?这是一个S(df.groupby(['simpleDate']).size() )的片段,注意没有04和05的条目。09-02-2013 209-03-2013 1009-06-2013 509-07-2013 1
3 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
更快的解决方法是使用.asfreq()。这不需要创建一个新的索引来调用.reindex()。
# "broken" (staggered) dates
dates = pd.Index([pd.Timestamp('2012-05-01'),
pd.Timestamp('2012-05-04'),
pd.Timestamp('2012-05-06')])
s = pd.Series([1, 2, 3], dates)
print(s.asfreq('D'))
2012-05-01 1.0
2012-05-02 NaN
2012-05-03 NaN
2012-05-04 2.0
2012-05-05 NaN
2012-05-06 3.0
Freq: D, dtype: float64
添加回答
举报
0/150
提交
取消