【发布时间】:2013-08-28 02:48:13
【问题描述】:
假设我们有一个这样的列表,显示每个对象在特定日期(mm-dd-yyyy-hour-minute)的计数:
A = [
[
['07-07-2012-21-04', 'orange', 1],
['08-16-2012-08-57', 'orange', 1],
['08-18-2012-03-30', 'orange', 1],
['08-18-2012-03-30', 'orange', 1],
['08-19-2012-03-58', 'orange', 1],
['08-19-2012-03-58', 'orange', 1],
['08-19-2012-04-09', 'orange', 1],
['08-19-2012-04-09', 'orange', 1],
['08-19-2012-05-21', 'orange', 1],
['08-19-2012-05-21', 'orange', 1],
['08-19-2012-06-03', 'orange', 1],
['08-19-2012-07-51', 'orange', 1],
['08-19-2012-08-17', 'orange', 1],
['08-19-2012-08-17', 'orange', 1]
],
[
['07-07-2012-21-04', 'banana', 1]
],
[
['07-07-2012-21-04', 'mango', 1],
['08-16-2012-08-57', 'mango', 1],
['08-18-2012-03-30', 'mango', 1],
['08-18-2012-03-30', 'mango', 1],
['08-19-2012-03-58', 'mango', 1],
['08-19-2012-03-58', 'mango', 1],
['08-19-2012-04-09', 'mango', 1],
['08-19-2012-04-09', 'mango', 1],
['08-19-2012-05-21', 'mango', 1],
['08-19-2012-05-21', 'mango', 1],
['08-19-2012-06-03', 'mango', 1],
['08-19-2012-07-51', 'mango', 1],
['08-19-2012-08-17', 'mango', 1],
['08-19-2012-08-17', 'mango', 1]
]
]
我需要在 A 中做的是为每个对象填充所有缺失的日期(从 A 的最小日期到最大日期),值为 0。一旦缺失的日期及其对应的值 (0) 出现,我想要总结每个日期的值,以便没有日期重复 - 对于每个子列表。
现在,我要做的事情如下:我分别分解 A 的日期和值(在名为 u 和 v 的列表中)并将每个子列表转换为 pandas 系列,并将它们各自的索引分配给它们。所以对于每个 zip(u,v):
def generate(values, indices):
indices = flatten(indices)
date_index = DatetimeIndex(indices)
ts = Series(values, index=date_index)
ts.reindex(date_range(min(date_index), max(date_index)))
return ts
但是在这里,重新索引导致引发异常。我正在寻找的是一种纯粹的pythonic方式(没有pandas),它完全基于列表理解甚至numpy数组。
还有另一个关于小时的聚合问题,这意味着如果所有日期都相同并且只有时间不同,那么我想填写一天中所有缺失的时间,然后对每个时间重复相同的聚合过程小时,缺少的小时用 0 值填充。
提前致谢。
【问题讨论】:
-
“我正在寻找的是一种纯粹的pythonic方式(没有熊猫)”嗯?
-
我的意思是用列表理解..也许..
-
与其用文字描述你想要什么,不如展示一个你想要的输出类型的假例子。
-
@khan - 我在下面的回答有什么问题吗?一年多来我一直在等待您的意见,我已尽力将其提供给您。