I have a pandas dataframe which looks like this:
Time 0 2020-11-12 09:00:00+01:00 1 2020-11-12 11:00:00+01:00 2 2020-11-12 13:00:00+01:00 3 2020-11-12 15:00:00+01:00 4 2020-11-12 17:00:00+01:00
The type of column Time is datetime64[ns, pytz.FixedOffset(60)](1), float64(7), int64(1), frequency of this column is 2H. I now want to extend the dataframe by new dates in order to get a dataframe like this one:
Time 0 2020-11-12 09:00:00+01:00 1 2020-11-12 11:00:00+01:00 2 2020-11-12 13:00:00+01:00 3 2020-11-12 15:00:00+01:00 4 2020-11-12 17:00:00+01:00 5 2020-11-12 19:00:00+01:00 6 2020-11-12 21:00:00+01:00
Advertisement
Answer
This function should do the work. As parameters it takes in:
dfdataframe you want to extend, column name you want to extendcolcolumn you want to extend from(in your example ‘Time’)periodshow many rows you want to generatefrequencyfrequency of the column(in your example ‘2H’)
def extend_df(df, col, periods, frequency):
last_date = df.iloc[-1][col]
#adding 1 to periods because pd.date_range includes last_date into its output and we are
#dropping that row
new_dates = pd.date_range(last_date, periods=periods + 1, freq=frequency)
new_df = pd.DataFrame(data= {col : new_dates})
#dropping first row
new_df = new_df.drop(0)
extended_df = df.append(new_df, ignore_index=True)
return extended_df