> For any answer, I assume below: > > - Data frame has single row for each date in the past years Set `Date` as index for the dataframe df_dateInx = df.set_index('Date') Now you can get a row for particular date using below code df_row = df_dateInx.loc['2018-07-15'] Add a new column to dataframe 'ChangePercent' in the last #df_dateInx.insert(inx_whr_col_to_insert, name_of_col) df_dateInx.insert(df_row.shape[1], 'ChangePercent', True) Create a function to calculate the different w.r.t. value the year before at the same day and month. This function would be invoked on each row of data frame def calChange(row): change = 0 val_prev_yr = df_dateInx.loc[row.Date - 1]['min'] val_this_row = row['min'] # do anything with values and return change return change P.S. `row.Date - 1` use date/time strptime function to do this Invoke above function on each row of data frame df_dateInx.agg([calChange]) And you would get a dataframe which has values populated in Change column as per your needs