title: How to loop through a pandas grouped time series?
body: <p>I have a dataframe like this:</p>
  <pre><code>                      datetime type   d13C  ...  dayofyear week         dmy
  1       2018-01-05 15:22:30  air  -8.88  ...          5    1    5-1-2018
  2       2018-01-05 15:23:30  air  -9.08  ...          5    1    5-1-2018
  3       2018-01-05 15:24:30  air -10.08  ...          5    1    5-1-2018
  4       2018-01-05 15:25:30  air  -9.51  ...          5    1    5-1-2018
  5       2018-01-05 15:26:30  air  -9.61  ...          5    1    5-1-2018
                      ...  ...    ...  ...        ...  ...         ...
  341543  2018-12-17 12:42:30  air  -9.99  ...        351   51  17-12-2018
  341544  2018-12-17 12:43:30  air  -9.53  ...        351   51  17-12-2018
  341545  2018-12-17 12:44:30  air  -9.54  ...        351   51  17-12-2018 
  341546  2018-12-17 12:45:30  air  -9.93  ...        351   51  17-12-2018
  341547  2018-12-17 12:46:30  air  -9.66  ...        351   51  17-12-2018
  </code></pre>
  <p>Full data here: <a href="https://drive.google.com/file/d/1KmOwnpvrG2Edz1AlLyD0CKZlBpaFervM/view?usp=sharing" rel="nofollow noreferrer">https://drive.google.com/file/d/1KmOwnpvrG2Edz1AlLyD0CKZlBpaFervM/view?usp=sharing</a></p>
  <p>I'm plotting d13C column on the Y-axis and inverse total_co2 on the X and then fitting a regression line for each day in the data. I then filter out and store the dates I want depending on if the r^2 value of the regression line is &gt; 0.8 like this:</p>
  <pre><code>import pandas as pd
  from numpy.polynomial.polynomial import polyfit
  import numpy as np
  from scipy import stats
  
  df = pd.read_csv('dataset.txt', usecols = ['datetime', 'type', 'total_co2', 'd13C', 'day','month','year','dayofyear','week','hour'], dtype = {'total_co2':
  np.float64, 'd13C':np.float64, 'day':str, 'month':str, 'year':str,'week':str, 'hour': str, 'dayofyear':str}) 
      
  df['dmy'] = df['day'] +'-'+ df['month'] +'-'+ df['year'] # adding a full date column to make it easir to filter through
  # the rows, ie. each day
  # window18 = df[((df['year']=='2018'))] # selecting just the data from the year 2018
  
  accepted_dates_list = [] # creating an empty list to store the dates that we're interested in
  for d in df['dmy'].unique(): # this will pass through each day, the .unique() ensures that it doesnt go over the same days  
      acceptable_date = {} # creating a dictionary to store the valid dates
      period = df[df.dmy==d] # defining each period from the dmy column
      p = (period['total_co2'])**-1
      q = period['d13C']
      c,m = polyfit(p,q,1) # intercept and gradient calculation of the regression line
      slope, intercept, r_value, p_value, std_err = stats.linregress(p, q) # getting some statistical properties of the regression line
      
      
      if r_value**2 &gt;= 0.8:
          acceptable_date['period'] = d # populating the dictionary with the accpeted dates and corresponding other values
          acceptable_date['r-squared'] = r_value**2
          acceptable_date['intercept'] = intercept
          accepted_dates_list.append(acceptable_date) # sending the valid stuff in the dictionary to the list
      else:
          pass
  
  
  accepted_dates18 = pd.DataFrame(accepted_dates_list) # converting the list to a df
  print(accepted_dates18)
  </code></pre>
  <p>But now I want to do the same thing, just over three day periods which I'm trying to select from the day of year column (unsure if this is the best way or not). For example, I would want to fit the regression line using all the rows with dayofyear=5, dayofyear=6, dayofyear=7, then for the next three days until the end of the data. There are some days missing, but essentially I just need to do this for every 3 days in the data.</p>
  <p>The output dataframe I am then trying to get would have the list of the three day intervals with the r^2 &gt;0.8, so anything like this that will show the valid date range:</p>
  <pre><code>  Accepted dates
  0  23-08-2018 - 25-08-2018
  1  26-08-2018 - 28-08-2018
  2  31-08-2018 - 02-09-2018
  3  15-09-2018 - 17-09-2018
  4  24-09-2018 - 26-09-2018
  </code></pre>
  <p>I'm not too sure what to do to iterate over every three days. Any help would go a long way, thanks!</p>