Python列表按日期分组

先生

说我有一个看起来像这样的列表:

[(datetime.datetime(2013, 8, 8, 1, 20, 15), 2060), (datetime.datetime(2013, 8, 9, 1, 6, 14), 2055), (datetime.datetime(2013, 8, 9, 1, 21, 1), 2050), (datetime.datetime(2013, 8, 10, 1, 5, 49), 2050), (datetime.datetime(2013, 8, 10, 1, 19, 51), 2050), (datetime.datetime(2013, 8, 11, 2, 4, 53), 2050), (datetime.datetime(2013, 8, 12, 0, 29, 45), 2050), (datetime.datetime(2013, 8, 12, 0, 44, 13), 2050), (datetime.datetime(2013, 8, 13, 0, 34, 13), 2050), (datetime.datetime(2013, 8, 13, 0, 47, 29), 2050), (datetime.datetime(2013, 8, 14, 1, 30, 39), 2050), (datetime.datetime(2013, 8, 14, 1, 33, 51), 2050), (datetime.datetime(2013, 8, 15, 0, 41, 1), 2050), (datetime.datetime(2013, 8, 15, 0, 54, 45), 2050), (datetime.datetime(2013, 8, 16, 0, 29, 57), 1950), (datetime.datetime(2013, 8, 16, 0, 43, 11), 1950), (datetime.datetime(2013, 8, 17, 0, 27, 4), 1950), (datetime.datetime(2013, 8, 17, 0, 42, 30), 1950), (datetime.datetime(2013, 8, 18, 0, 26, 26), 1950), (datetime.datetime(2013, 8, 18, 0, 43, 11), 1950), (datetime.datetime(2013, 8, 19, 0, 41, 49), 1950), (datetime.datetime(2013, 8, 20, 1, 10, 23), 1950), (datetime.datetime(2013, 8, 20, 1, 23, 44), 1950), (datetime.datetime(2013, 8, 21, 0, 47, 25), 1950), (datetime.datetime(2013, 8, 21, 1, 0, 12), 1950), (datetime.datetime(2013, 8, 22, 0, 45, 21), 1950), (datetime.datetime(2013, 8, 22, 1, 4, 33), 1950), (datetime.datetime(2013, 8, 23, 0, 51, 27), 1950), (datetime.datetime(2013, 8, 23, 1, 6, 36), 1950), (datetime.datetime(2013, 8, 24, 0, 41, 3), 1950), (datetime.datetime(2013, 8, 24, 0, 53, 14), 1950), (datetime.datetime(2013, 8, 25, 0, 29, 24), 1950), (datetime.datetime(2013, 8, 25, 0, 42, 40), 1950), (datetime.datetime(2013, 8, 26, 0, 28, 13), 1950), (datetime.datetime(2013, 8, 26, 0, 43, 30), 1950), (datetime.datetime(2013, 8, 27, 0, 30, 1), 1950), (datetime.datetime(2013, 8, 27, 0, 43, 43), 1950), (datetime.datetime(2013, 8, 28, 0, 33, 19), 1950), (datetime.datetime(2013, 8, 28, 0, 49, 11), 1950), (datetime.datetime(2013, 8, 29, 0, 26, 49), 1950), (datetime.datetime(2013, 8, 29, 0, 41, 21), 1950), (datetime.datetime(2013, 8, 30, 0, 26, 13), 1950), (datetime.datetime(2013, 8, 30, 0, 42, 9), 1950), (datetime.datetime(2013, 8, 31, 0, 23, 40), 1950), (datetime.datetime(2013, 8, 31, 0, 39, 49), 1950), (datetime.datetime(2013, 9, 1, 0, 22, 2), 1950), (datetime.datetime(2013, 9, 1, 0, 38, 16), 1950), (datetime.datetime(2013, 9, 2, 0, 21, 2), 1950), (datetime.datetime(2013, 9, 2, 0, 36, 19), 1950), (datetime.datetime(2013, 9, 3, 0, 22, 16), 1950), (datetime.datetime(2013, 9, 3, 0, 39, 2), 1900)]

显然,您会看到这是一个元组列表,每个元组中的第一个元素是一个时间戳。已采用以下格式生成,格式正确:

datetime.strptime(record[0], timeFormat)

第二个要素是监控值。但是,每天可能会有多个记录。例如,datetime.datetime(2013,8,9 ..)上有两条记录,它们有两个不同的值2055和2050。我想要的实际上是每天的最大值。所以在这种情况下。2055年将是(2013,8,9)的唯一记录。

我想知道Python中是否有方便的方法可以做到这一点。类似于mysql的一些东西:

select 
    date(timestamp), 
    max(value)
from table 
group by date(timestamp)

mysql语句只是为了展示这个想法,我当然想要一个python解决方案。

虚假的

用途itertools.groupby

>>> records = [(datetime.datetime(2013, 8, 8, 1, 20, 15), 2060), ....]
>>> import itertools
>>> [(dt, max(v for d, v in grp)) for dt, grp in itertools.groupby(records, key=lambda x: x[0].date())]
[(datetime.date(2013, 8, 8), 2060),
 (datetime.date(2013, 8, 9), 2055),
 (datetime.date(2013, 8, 10), 2050),
 ...
]

注意:假设记录已排序。如果不是,则应首先按日期对它们进行排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按日期分组列表

来自分类Dev

按相似日期分组列表

来自分类Dev

从列表到集合的AutoMapper按日期分组

来自分类Dev

按日期分组列表,每个项目有多个日期

来自分类Dev

Python 列表视图 - 按相同的用户和日期获取和分组表的数据

来自分类Dev

Laravel按日期分组

来自分类Dev

按日期分组对象

来自分类Dev

按日期分组NSDictionary

来自分类Dev

SQL按日期分组

来自分类Dev

按日期分组mongoDB

来自分类Dev

按当地日期分组

来自分类Dev

SQL按日期分组

来自分类Dev

Laravel按日期分组

来自分类Dev

按日期/月分组

来自分类Dev

按类别分组列表

来自分类Dev

按数组列表分组

来自分类Dev

按列表中的分组

来自分类Dev

Python:按日期对列表进行排序?

来自分类Dev

按日期对列表的python字典进行排序

来自分类Dev

Python,按日期对象对列表进行排序

来自分类Dev

如何使用Python / Pandas从“日期”字段按年份分组

来自分类Dev

按日期时间的每周细分分组64 python

来自分类Dev

如何在 Python 中按最大日期分组

来自分类Dev

如何在div中将具有相同日期的项目分组时按日期显示列表

来自分类Dev

按开始日期和结束日期对列表中的元素进行分组或过滤

来自分类Dev

Magento按日期字段分组

来自分类Dev

pymongo按日期时间分组

来自分类Dev

MongoDb汇总按日期分组

来自分类Dev

SQL:按日期分组结果