為pandas數(shù)據(jù)幀添加缺少日期我的數(shù)據(jù)可以在給定日期有多個(gè)事件,也可以在某個(gè)日期沒有事件。我參加這些活動(dòng),按日期計(jì)算并繪制它們。但是,當(dāng)我繪制它們時(shí),我的兩個(gè)系列并不總是匹配。idx = pd.date_range(df['simpleDate'].min(), df['simpleDate'].max())s = df.groupby(['simpleDate']).size()在上面的代碼中,idx成為30個(gè)日期的范圍。S 01-01-2013至09-30-2013但是S可能只有25天或26天,因?yàn)樵诮o定日期沒有發(fā)生任何事件。然后,當(dāng)我嘗試?yán)L制時(shí),我得到一個(gè)AssertionError,因?yàn)榇笮〔黄ヅ洌篺ig, ax = plt.subplots() ax.bar(idx.to_pydatetime(), s, color='green')解決這個(gè)問題的正確方法是什么?我是否要?jiǎng)h除IDX中沒有值的日期或(我寧愿這樣做)將系列添加到缺少日期的計(jì)數(shù)為0.我寧愿擁有30天的完整圖表,其中包含0值。如果這種方法是正確的,那么有關(guān)如何開始的任何建議?我需要某種動(dòng)態(tài)reindex功能嗎?這是一個(gè)S(df.groupby(['simpleDate']).size() )的片段,注意沒有04和05的條目。09-02-2013 209-03-2013 1009-06-2013 509-07-2013 1
3 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
更快的解決方法是使用.asfreq()。這不需要?jiǎng)?chuàng)建一個(gè)新的索引來調(diào)用.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
添加回答
舉報(bào)
0/150
提交
取消