 <pre><code>df.set_index('date').groupby('type', as_index=False).resample('d').bfill().reset_index().drop('level_0', axis=1) Out: date type value 0 2016-01-01 a 1 1 2016-01-02 a 3 2 2016-01-03 a 3 3 2016-01-04 a 3 4 2016-01-10 b 4 5 2016-01-11 b 7 6 2016-01-12 b 7 7 2016-01-13 b 7 </code></pre>