1

我有一个从 hdf5 文件中读取的 vaex 数据框。它有一个日期列,它被读取为字符串。我将其转换为日期时间。但是,我无法进行任何日期比较。我可以从日期中提取日、月、年等,因此转换是正确的。但是如何执行日期在 x 和 y 之间的操作?

import vaex
import datetime

vaex_df=vaex.open('filename.hdf5')
vaex_df['pDate']=vaex_df.Date.values.astype('datetime64[ns]')

数据类型符合预期

print(data.dtypes)
## Date            <class 'str'>
## pDate          datetime64[ns]

现在我需要根据某个日期过滤掉行

start_date=datetime.date(2019,10,1)
vaex_df=vaex_df[(vaex_df.pDate.dt>=start_date)] 
print(vaex_df) # throws SyntaxError: invalid token 

当我尝试查看新的数据框时,我得到了一个无效的令牌。我可以分别提取月份和年份并应用过滤器。但这会给出错误的结果

vaex_df=vaex_df[(vaex_df.pDate.dt.month>int(str(start_date)[5:7]))&(vaex_df.pDate.dt.year>=int(str(start_date)[:4]))]

如何在 vaex 中进行日期范围比较操作?

4

1 回答 1

5

来自numpy的日期时间作品

#Instead of 
start_date=datetime.date(2019,10,1) 
#Use 
start_date=np.datetime64('2019-10-01')

在 vaex 数据框上

vaex_df=vaex_df[(vaex_df.pDate>=start_date)] 
于 2020-03-25T00:17:51.487 回答