I have a list of dates in a csv file which I would like to extract the last date of each month using python.
For example, 03/08/2019 20/08/2019 30/12/2020 31/12/2020
The output should be 20/08/2019 & 31/12/2020
I have a list of dates in a csv file which I would like to extract the last date of each month using python.
For example, 03/08/2019 20/08/2019 30/12/2020 31/12/2020
The output should be 20/08/2019 & 31/12/2020
You can sort
the list of dates based on year, month and date and then convert it to a dict with key as the month and year, which would retain only the last date for a given month and year and then get dict's values as a list
>>> lst = ['03/08/2019', '20/08/2019', '30/12/2020', '31/12/2020']
>>> list({date.split('/', 1)[-1]:date for date in sorted(lst, key=lambda date: date.split('/')[::-1])}.values())
['20/08/2019', '31/12/2020']
Or using datetime
>>> from datetime import datetime
>>> to_date = lambda d: datetime.strptime(d, '%d/%m/%Y')
>>> list({to_date(d).replace(day=1):d for d in sorted(lst, key=to_date)}.values())
['20/08/2019', '31/12/2020']
@PythonNovice. I'd suggest starting with itertools.groupBy which is discussed here. You've got to open that file, parse the lines, sort the data, group it by months and take the last element of each month. Is there a specific part of that with which you're having a problem?