title: Creating new rows in df based on date range
body: <p>Below is script for a simplified version of the df in question:</p>
  
  <pre><code>import pandas as pd
  import numpy as np
  from datetime import date
  from datetime import datetime
  
  df = pd.DataFrame({'date':pd.date_range(start='2020-01-01', end='2020/01/07'), 
                     'id' : range(1,8), 
                     'product': ['list_3','list_1','list_2', 'list_3','list_2','list_1','list_1'],
                    'duration' : [3,1,2,3,2,1,1],
                    'product_in_use': ('true'),
                    'end_date':['2020-01-03','2020-01-02','2020-01-04','2020-01-06','2020-01-06','2020-01-06',
                                  '2020-01-07']})
  
  df['duration']= pd.to_timedelta(df['duration'], unit='D')
  df['date'] = pd.to_datetime(df['date'])
  df['end_date'] = pd.to_datetime(df['end_date'])
  df
  </code></pre>
  
  <p>df:</p>
  
  <pre><code>    date       id   product duration product_in_use end_date
  0   2020-01-01  1   list_3  3 days     true        2020-01-03
  1   2020-01-02  2   list_1  1 days     true        2020-01-02
  2   2020-01-03  3   list_2  2 days     true        2020-01-04
  3   2020-01-04  4   list_3  3 days     true        2020-01-06
  4   2020-01-05  5   list_2  2 days     true        2020-01-06
  5   2020-01-06  6   list_1  1 days     true        2020-01-06
  6   2020-01-07  7   list_1  1 days     true        2020-01-07
  </code></pre>
  
  <p>As you can see in the df above, each id is using a product and each product lasts for a particular duration. There are no rows for the days when the product is in action, only rows for when the product was purchased by the user. </p>
  
  <p>Therefore, I would like to create new rows, for <strong>all</strong> dates where the product is in use for each id.</p>
  
  <p>My intended df would therefore be this:</p>
  
  <pre><code>    date       id   product  duration   product_in_use
  0   2020-01-01  1   list_3   3 days         true
  1   2020-01-02  1   list_3   3 days         true
  2   2020-01-03  1   list_3   3 days         true
  3   2020-01-02  2   list_1   1 days         true
  4   2020-01-03  3   list_2   2 days         true
  5   2020-01-04  3   list_2   2 days         true
  6   2020-01-04  4   list_3   3 days         true
  7   2020-01-05  4   list_3   3 days         true
  8   2020-01-06  4   list_3   3 days         true
  9   2020-01-05  5   list_2   3 days         true
  10  2020-01-06  5   list_2   2 days         true
  11  2020-01-06  6   list_1   2 days         true
  12  2020-01-07  7   list_1   1 days         true
  </code></pre>