Skip to content

Instantly share code, notes, and snippets.

@waylan
Last active December 28, 2018 21:17
Show Gist options
  • Save waylan/baef93f58fb7acd7ff9b2ce4fd105a5b to your computer and use it in GitHub Desktop.
Save waylan/baef93f58fb7acd7ff9b2ce4fd105a5b to your computer and use it in GitHub Desktop.
Use Pandas to get a range of start/end dates for all weeks of year
import pandas as pd
# "W-SUN" for Monday to Sunday week. Use "W-SAT" for Sunday to Saturday...
date_range = pd.period_range('1/1/2019', '12/31/2019', freq='W-SUN')
"""
>>> date_range
PeriodIndex(['2018-12-31/2019-01-06', '2019-01-07/2019-01-13',
'2019-01-14/2019-01-20', '2019-01-21/2019-01-27',
...
'2019-12-16/2019-12-22', '2019-12-23/2019-12-29',
'2019-12-30/2020-01-05'],
dtype='period[W-SUN]', freq='W-SUN')
"""
if date_range[0].start_time.year < 2019:
# The start time of the first week is in previous year so drop it.
date_range = date_range[1:]
formated_range = ['{}-{}'.format(p.start_time.strftime('%B %d'), p.end_time.strftime('%d')) for p in date_range]
"""
>>> formated_range
['January 07-13', 'January 14-20', 'January 21-27', 'January 28-03',
'February 04-10', 'February 11-17', 'February 18-24', 'February 25-03',
'March 04-10', 'March 11-17', 'March 18-24', 'March 25-31', 'April 01-07',
'April 08-14', 'April 15-21', 'April 22-28', 'April 29-05', 'May 06-12',
'May 13-19', 'May 20-26', 'May 27-02', 'June 03-09', 'June 10-16',
'June 17-23', 'June 24-30', 'July 01-07', 'July 08-14', 'July 15-21',
'July 22-28', 'July 29-04', 'August 05-11', 'August 12-18', 'August 19-25',
'August 26-01', 'September 02-08', 'September 09-15', 'September 16-22',
'September 23-29', 'September 30-06', 'October 07-13', 'October 14-20',
'October 21-27', 'October 28-03', 'November 04-10', 'November 11-17',
'November 18-24', 'November 25-01', 'December 02-08', 'December 09-15',
'December 16-22', 'December 23-29', 'December 30-05']
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment