2017-03-03 142 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