从给定的日期列表中获取月份的最后一个日期

时间:2019-08-16 01:50:36

标签: python

我在一个csv文件中有一个日期列表,我想使用python提取每个月的最后一个日期。

例如, 2019/03/08 20/08/2019 2020年12月30日 2020年12月31日

输出应为20/08/2019&31/12/2020

2 个答案:

答案 0 :(得分:0)

您可以sort根据年份,月份和日期来列出日期,然后将其转换为键为月份和年份的字典,它将仅保留给定月份和年份的最后日期,以及然后以列表形式获取dict的值

>>> 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']

或使用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']

答案 1 :(得分:0)

@PythonNovice。我建议从here开始讨论itertools.groupBy。 您必须打开该文件,分析行,对数据进行排序,按月分组,然后使用每月的最后一个元素。您遇到问题的那一部分是否有问题?