我有一本字典WO
,格式如下:
WO = {datetime: {'V1', 'V2', 'V3', 'V4'}}
其中datetime
是(示例)格式的键:
datetime.date(2014, 6, 20)
和V1
到V4
是包含浮动值的列表。你知道吗
示例:
WO = {datetime.date(2014, 12, 20): {'V1': [11, 15, 19],
'V2': [12, 3, 4],
'V3': [50, 55, 56],
'V4': [100, 112, 45]},
datetime.date(2014, 12, 21): {'V1': [10, 12, 9],
'V2': [16, 13, 40],
'V3': [150, 155, 156],
'V4': [1100, 1132, 457]},
datetime.date(2014, 12, 22): {'V1': [107, 172, 79],
'V2': [124, 43, 44],
'V3': [503, 552, 561],
'V4': [1000, 1128, 457]}}
如果我想根据给定日期的周将V1
到V4
中的值聚合,例如:
my_date = datetime.date(2014, 5, 23)
对于给定的日期,将V1
到V4
中本周的所有值聚合,其中本周从周一开始。你知道吗
year, week, weekday = datetime.date(my_date).isocalendar()
这行给我这个特定日期的星期和工作日。你知道吗
如果我的职能是:
def week(date):
'''
date is in 'datetime.date(year, month, date)' format
This function is supposed to aggregate values in 'V1', 'V2', 'V3' and
'V4' for a whole week according to the parameter 'date'
'''
接下来如何定义这样的函数?你知道吗
据我所知,您希望对给定日期的给定周的所有V1…V4值进行一些操作。 首先,我将首先查找给定日期的星期一(周开始)。你知道吗
会给你最后一个星期一的日期。你知道吗
然后您可以将其用于一周内的日期范围: Creating a range of dates in Python
最后,在daterange for循环中,迭代WO值并获得结果。你知道吗
如果我将缺少的大括号添加到
WO
以消除语法错误(您应该在发布之前检查这些错误):然后我可以这样做来查看数据中的周数:
我可以看到,在这个例子中,有两个星期,你要合计:
也就是说,您的数据与ISO 2014年第51周和第52周有关。您正在按周进行合并,因此聚合的数据将有一个键
(year, week)
,但没有日期。(您需要年份,因为您的数据中可能有不同的年份。)因此您希望使用键(2014, 51)
和(2014, 52)
构建一个dict
。一个人将有3个与"V1"
-"V4"
相关的值,因为那一周只有一天,没有什么可巩固的。另一周将有6个值与"V1"
-"V4"
关联,因为数据中该周有两天。你知道吗从空的
dict
开始包含摘要:像以前一样遍历日期以查找年份和周数,但这次根据
(year, week)
键收集数据:您可以使用嵌套的
defaultdict
从同一周收集数据,使用周数作为键(或其他一些可哈希标识符)。然后使用嵌套字典理解来对列表元素进行求和。你知道吗相关问题 更多 >
编程相关推荐