Skip to content

Instantly share code, notes, and snippets.

@mjam03
Created February 22, 2021 11:10
Show Gist options
  • Save mjam03/3f84e0feb860dc61d8de0a74b7a1eeda to your computer and use it in GitHub Desktop.
Save mjam03/3f84e0feb860dc61d8de0a74b7a1eeda to your computer and use it in GitHub Desktop.
test_8
# earliest records for weekly death data back to 1974 for scotland
START_DATE = dt.date(1973, 12, 29)
# define start dates and end dates
start_date_list = [START_DATE+dt.timedelta(days=7*x) for x in range(0,52*50)]
start_date_list = [x for x in start_date_list if x < (dt.date.today() + dt.timedelta(days=28))]
end_date_list = [x + dt.timedelta(days=-1) for x in start_date_list[1:]]
# create a df for them and a week count per year
df_week_map = pd.DataFrame({'week_start': start_date_list[:-1], 'week_end': end_date_list})
use_next_year = [x>=dt.timedelta(days=361) for x in [x - dt.date(x.year, 1, 1) for x in start_date_list[:-1]]]
df_week_map['use_next_year'] = use_next_year
# correction for 2014/2015
df_week_map.at[2139, 'use_next_year'] = True
df_week_map['Year'] = df_week_map['week_start'].apply(lambda x: x.year) + np.where(df_week_map['use_next_year'], 1, 0)
df_week_map['Week'] = df_week_map[['use_next_year', 'Year']].groupby(['Year']).cumcount() + 1
# drop helper col and ensure dt format is correct
df_week_map = df_week_map.drop(columns=['use_next_year'])
df_week_map['week_start'] = pd.to_datetime(df_week_map['week_start'])
df_week_map['week_end'] = pd.to_datetime(df_week_map['week_end'])
df_week_map.tail(10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment