系列时间戳中的bool运算符不起作用

时间:2016-01-01 13:22:06

标签: python pandas timestamp

出于某种原因,我无法检查熊猫系列中是否有日期。

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,

奥利弗。

1 个答案:

答案 0 :(得分:2)

使用时 value in obj,python尝试将值传递给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

它试图检查给定的键是否在其索引中,而不是检入它的值

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