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

标签 python pandas timestamp

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

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 不起作用吗?

TIA,

奥利维尔。

最佳答案

当你使用 obj 中的值,python 尝试将值传递给 __contains__ obj 的内置函数

尝试检查 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

关于python - 系列中时间戳的 bool 运算符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34556493/

相关文章:

python - 在 DataFrame 中为一系列日期创建 id

python - 递减范围内的乘积之和

python - 每次添加一行时更新时间戳?

PHP 相当于一个 javascript 时间戳(毫秒不是微秒)

python - 语法错误 : encoding declaration in Unicode string

python - 使Emacs的Python交互模式高亮缩进

python-3.x - 根据字段值重现/中断行

PHP 将 mysql 时间戳添加到现有时间戳

python - Keras 中的 dropout 行为,rate=1(丢弃所有输入单元)不符合预期

类似于 Python Pylons 的 PHP 框架