Python 序列中时间戳的bool运算符不起作用
由于某些原因,我无法检查日期是否在熊猫系列中Python 序列中时间戳的bool运算符不起作用,python,pandas,timestamp,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 有人能解释一
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
有人能解释一下为什么ts中的d
不起作用吗
蒂亚
奥利维尔。当你使用
在obj中,python试图将值传递给obj的内置函数
尝试检查ts的类型:
In [1]: type(ts)
Out[1]: pandas.core.series.Series
如果您看到pandas.core.series.series
,您会发现\uuuuu包含的定义如下所示:
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
好吧,它是这样的,但是,为什么它不一致呢?如果我使用整数:ts=pd.Series([1,2,3])
那么ts中的2给出了True
单独的代码块并不能提供一个好的答案。请添加解释(为什么它解决了问题,错误在哪里,等等。)希望我能像你在版本中对我的上一个答案所问的那样解释:)详细的解释很清楚,谢谢:-)我的ts=pd.Series([1,2,3])
的例子很幸运,索引的值与值相同。