2016-01-01 101 views
2

由於某種原因,我無法檢查日期是否在熊貓系列中。bool操作員在系列時間戳不起作用

import pandas as pd 
import numpy as np 
ts = pd.Series(['2011-01-01','02-02-2011'], dtype='datetime64[ns]') 
d = np.datetime64(pd.Timestamp('02-02-2011')) 

現在...

In [5]: d == ts[1] 
Out[5]: True 

In [6]: d in ts 
Out[6]: False 

有人能解釋我爲什麼d in ts不起作用?

TIA,

Olivier。

回答

2

當您使用 value in obj,蟒蛇試圖值傳遞給obj的__contains__內置功能

嘗試檢查TS類型:

In [1]: type(ts) 
Out[1]: pandas.core.series.Series 

如果你看到pandas.core.series.Series,你會發現__contains__的定義如下:

def __contains__(self, key): 
    return key in self.index 

所以,試試這個:

In [2]: 0 in ts 
Out[2]: True 
In [3]: 1 in ts 
Out[3]: True 

它試圖檢查定key是否在它的指數與否,檢查它的價值觀

In [4]: d in ts.values 
Out[4]: True 
+0

好它使但隨後,爲什麼它是不是一致的?如果我使用整數:'ts = pd.Series([1,2,3])',則ts中的'2'給出'True' – Olric

+0

單獨的代碼塊並不能提供良好的答案。請添加解釋(爲什麼它解決了問題,錯誤在哪裏,等等......) –

+0

希望我可以解釋,因爲你在編輯問我以前的答案:) – kia