当前位置: 首页 > 知识库问答 >
问题:

Python:列表中每个月的最大日期[重复]

许奇
2023-03-14

我有一个包含日期的列表,列表如下:

list = ['2020-04-05',
 '2020-04-12',
 '2020-04-19',
 '2020-04-26',
 '2020-05-03',
 '2020-05-10',
 '2020-05-17',
 '2020-05-24',
 '2020-05-31',
 '2020-06-07',
 '2020-06-14',
 '2020-06-21',
 '2020-06-28',
 '2020-07-05',
 '2020-07-12',
 '2020-07-19',
 '2020-07-26',
 '2020-08-02',
 '2020-08-09',
 '2020-08-16',
 '2020-08-23',
 '2020-08-30',
 '2020-09-06',
 '2020-09-20',
 '2020-09-13']

我想从列表中提取每个月的最高日期。我想要的输出如下:

Desired list = ['2020-04-26','2020-05-31','2020-06-28','2020-07-26','2020-08-30','2020-09-20']

我试图使用Max()找到一个月的最大日期,但它给出了列表中的总体最大日期。有没有办法从列表中找到每个月的最大日期。

共有3个答案

班昱
2023-03-14

以下是如何:

dates = ['2020-04-05',
         '2020-04-12',
         '2020-04-19',
         '2020-04-26',
         '2020-05-03',
         '2020-05-10',
         '2020-05-17',
         '2020-05-24',
         '2020-05-31',
         '2020-06-07',
         '2020-06-14',
         '2020-06-21',
         '2020-06-28',
         '2020-07-05',
         '2020-07-12',
         '2020-07-19',
         '2020-07-26',
         '2020-08-02',
         '2020-08-09',
         '2020-08-16',
         '2020-08-23',
         '2020-08-30',
         '2020-09-06',
         '2020-09-20',
         '2020-09-13']


dct = {date.rsplit('-', 1)[0]: [] for date in dates} # Dict with keys as all the dates without the day number, and values as empty lists
for date in dates:
    y, m, d = date.split('-')
    dct[f'{y}-{m}'].append(int(d)) # Add all the days from the months into the empty lists
        
print([f'{ym}-{max(dct[ym])}' for ym in dct]) # Concat the year and months with the greatest date

输出:

['2020-04-26', '2020-05-31', '2020-06-28', '2020-07-26', '2020-08-30', '2020-09-20']
锺玺
2023-03-14

你可能会

  • 使用date将每个字符串日期转换为date对象。fromisoformat
  • 按月对值进行分组
  • 每月检索最大值
  • 转换回字符串
from datetime import date
from itertools import groupby
from operator import methodcaller

dates = map(date.fromisoformat, values)
dates_pre_month = groupby(sorted(dates, key=lambda x: x.month), key=lambda x: x.month)

max_per_month = (max(month_values) for month, month_values in dates_pre_month)
max_per_month = list(map(methodcaller("isoformat"), max_per_month))
陆沈浪
2023-03-14

你能行

s = pd.Series(pd.to_datetime(l))
new_list = s.groupby(s.dt.strftime('%Y-%m')).max().tolist()
new_list
[Timestamp('2020-04-26 00:00:00'), Timestamp('2020-05-31 00:00:00'), Timestamp('2020-06-28 00:00:00'), Timestamp('2020-07-26 00:00:00'), Timestamp('2020-08-30 00:00:00'), Timestamp('2020-09-20 00:00:00')]
 类似资料:
  • 问题内容: 我正在尝试使用python获取上个月的日期。这是我尝试过的: 但是,这种方法很糟糕,原因有两个:首先,它返回2012年2月的20122(而不是201202),其次它将返回0而不是1月的12。 我已经用bash解决了这个麻烦 我认为,如果bash为此目的具有内置方式,那么功能更强大的python应该比强迫编写自己的脚本来实现此目标更好。我当然可以做类似的事情: 我没有测试过此代码,也不想

  • 本文向大家介绍在Python中的每个子列表中查找最大值,包括了在Python中的每个子列表中查找最大值的使用技巧和注意事项,需要的朋友参考一下 我们得到一个列表列表。在内部列表或子列表中,我们需要在每个列表中找到最大值。 与最大和 我们设计一个带in条件的for循环,并应用max函数来获取每个子列表中的最大值。 示例 输出结果 运行上面的代码给我们以下结果- 带映射和最大 在遍历子列表时,我们继续

  • 假设我有一个像下面这样的数据,有名称、类和日期 我正在寻找一个输出,这将给我的每个名字的值计数,他们各自的等级和最早的日期和最新的日期。我的输出是, 我能够找到每个名字的计数, 但无法在“日期”列中找到“最早日期”和“最晚日期”。 有人能帮我吗?

  • 我正在尝试建立一个网站,告诉你(以年、月、周、小时、分钟和秒为单位)你的年龄。我让他们每个人都工作了好几个月甚至好几年。一旦我得到了月数,我就可以得到年数(希望如此),但是我在想办法得到月数时遇到了困难。对于其他人来说,这很容易(一旦我有了出生日期和当前日期之间的秒数,我就可以把秒转换成分钟、小时、天等等),但是在接下来的几个月里,我需要考虑到它们都是不同的长度和闰年(目前也不影响天数)。

  • 我有一个LocalDateTime对象,我想得到这个月的最后一个日期。所以如果localDateTime指向今天的10月29日。我想把它改为10月31日 有没有干净简单的方法 我的想法: 一种方法是得到这个月,然后做一个转换声明。但这将是一个漫长而乏味的过程。不确定是否有内置的方法来做同样的事情

  • 我使用石英调度和Spring Batch,我需要在每个月的最后一个星期四运行一个特定的工作。 有可能创建这样的Quartz cron表达式吗? 谢谢