我有一个核阵列大致如下:
data
array([(datetime.datetime(2009, 1, 6, 2, 30), 17924.0, 0.0),....
(datetime.datetime(2009, 1, 29, 16, 30), 35249.2, 521.25],
dtype=[('timestamp', '|O4'), ('x1', '<f8'), ('x2', '<f8')])
我希望能够基于第一列(即,使用datetime对象)索引数据,这样我就可以访问一个特定的年/月/日值的数据,如下所示:
data[data['timestamp'].year == 2009]
这显然行不通。我唯一能想到的是添加额外的列(例如“year”列),这样就可以:
data[data['year'] == 2009]
似乎是一种相当低效的做事方式(而且会复制很多数据)-特别是如果我想索引所有其他时间间隔。。。有更好的办法吗?
提前谢谢。
使用pandaspandas是一个开源的、BSD许可的库,为Python编程语言提供了高性能、易于使用的数据结构和数据分析工具。”
文档中有很多示例,但您可以这样做:
我建议尽快学习这个模块。这绝对是例外。这是一个非常简单的例子。查看非常详尽的文档。
好的,所以我想我解决了这个问题(使用pandas,正如上面strimp099所建议的那样),特别是使用“GroupBy”对象(pandas: Group By: split-apply-combine)
要详细说明上面使用的示例:
(即按月份分组的数据的平均值)
此外,要进行多个分组(例如,在我的案例中是年和月),这可能有助于:
干杯!
您还可以在numpy中使用datetime数据类型。我还没有对这两种方法进行基准测试,但它们可能非常接近。下面是一个例子:
相关问题 更多 >
编程相关推荐