为了账号安全,请及时绑定邮箱和手机立即绑定

为pandas数据帧添加缺少日期

为pandas数据帧添加缺少日期

慕虎7371278 2019-08-26 17:56:44
为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


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 471 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信