在日期时间对象python中搜索

Posted

技术标签:

【中文标题】在日期时间对象python中搜索【英文标题】:Searching within a datetime object python 【发布时间】:2017-01-14 07:02:51 【问题描述】:

我试图定位日期时间对象的指定范围内的年份。我尝试过用几种不同的方式做一个 for 循环,但不幸的是我似乎无法让它工作。我知道当我将 datetime 对象转换为 pandas 数组时,我可以搜索几个月和几年,但不幸的是,我使用的软件没有 pandas 库,我无法将其下载到我的学校服务器。

以下是我如何读取我的时间数据并且它运​​行良好(它消除了以不同方式转换我的时间所需的大量时间)

date = netCDF4.Dateset('filename.nc', mode = 'r')
raw_time = data.variables['time']
time_converted = netCDF4.num2date(raw_time[:], raw_time.units)

time_converted 变量是一个日期时间对象,如下所示:

   ....
   datetime.datetime(2006, 1, 1, 0, 0),
   datetime.datetime(2006, 2, 1, 0, 0),
   datetime.datetime(2006, 3, 1, 0, 0),
   datetime.datetime(2006, 4, 1, 0, 0),
   datetime.datetime(2006, 5, 1, 0, 0),
   datetime.datetime(2006, 6, 1, 0, 0),
   datetime.datetime(2006, 7, 1, 0, 0),
   datetime.datetime(2006, 8, 1, 0, 0),
   datetime.datetime(2006, 9, 1, 0, 0),
   ..... 

下面的循环是我最近的尝试,它返回以下错误:

time = []
for i in time_converted:
    if i.year>= 2006 and i.year<2016:
        time.append(i)

Type Error: 'int' object is not callable

在我的循环中,我也尝试过使用 datetime.datetime.year(i) 但返回:

Type Error: 'getset_descriptor' is not callable

【问题讨论】:

从 i.year() 中删除括号,它是属性而不是方法 @Alex 当我删除括号时,它返回一个索引错误,指出只有整数、切片、省略号和一维整数或布尔数组是有效的索引... 你能粘贴你运行的代码吗?您的循环中不应有任何索引错误,请查看堆栈跟踪以找出问题所在。 @Alex 我更新了问题以显示我最近的运行情况。 【参考方案1】:

原来我需要使用以下循环:

for i in range(len(time_converted)):
    if time_converted[i].year >= 2006 and time_converted[i].year < 2016:
        time.append(time_converted[i])

【讨论】:

以上是关于在日期时间对象python中搜索的主要内容,如果未能解决你的问题,请参考以下文章

在具有正确日期的python中转换和计算日期时间对象的时区

为啥python中日期时间对象的json序列化不能为日期时间对象开箱即用

需要编写一个谓词来搜索核心数据对象数组属性中的日期(在我的例子中是日期数组)

如何比较python中的日期时间对象?

Python日期字符串到日期对象

Python imaplib 使用日期和时间搜索电子邮件