我在一个csv文件中有一个日期列表,我想使用python提取每个月的最后一个日期。
例如, 2019/03/08 20/08/2019 2020年12月30日 2020年12月31日
输出应为20/08/2019&31/12/2020
答案 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。 您必须打开该文件,分析行,对数据进行排序,按月分组,然后使用每月的最后一个元素。您遇到问题的那一部分是否有问题?