2017-03-03 93 views
-1

我在下面的代码中遇到了一个奇怪的情况。正如你看到的,似乎有与timestamp_day值比下面的代码指示值没有数据:关于基于datatime列过滤数据帧的奇怪行为

print myDF.shape 
> (447609, 20) 

print myDF[myDF['timestamp_day'] < timedelta(2014, 7, 26, 2, 0)].shape 
> (0, 20) 

然而,当我检查timestamp_day(见下文)的最小值,我看上面的代码应该返回一些行。

myDF['timestamp_day'].min() 
> datetime.datetime(2014, 5, 21, 12, 0) 

任何人有任何想法,为什么发生这种情况?

+2

hmm,'timedelta'和'datetime'对象是不一样的。 '从datetime导入datetime,timedelta; d = datetime(1970,1,1); t = timedelta(1970,1,1);打印(d == t); #假' – DeepSpace

回答

1

尝试拔出一些练习值来测试您的不平等是否有意义。

datetime.datetime(2014, 5, 21, 12, 0) < timedelta(2014, 7, 26, 2, 0) 
TypeError: unorderable types: datetime.datetime() < datetime.timedelta() 

你有没有试过只是一个datetime.datetime比较?

datetime.datetime(2014, 5, 21, 12, 0) < datetime.datetime(2014, 7, 26, 2, 0) 
True