首页 > 解决方案 > 比较 datetime64[ns] 和时间戳

问题描述

如何datetime64[ns]与时间戳进行比较?让我们注意它date_是时间戳类型并且max_date是时间戳类型。

我做了

(df[(self.date_)] > (max_date))

标签: pythonpandas

解决方案


要重现,让我做

date = pd.date_range(
    start=pd.to_datetime('now') - pd.Timedelta(days=10), 
    end=pd.to_datetime('now') + pd.Timedelta(days=10)
).to_numpy()
df = pd.DataFrame({
    'date': date,
})

max_date = pd.Timestamp('now')

并检查类型

df.info()

这给了

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 21 entries, 0 to 20
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   date    21 non-null     datetime64[ns]
dtypes: datetime64[ns](1)
memory usage: 296.0 bytes

type(max_date)

这给了

pandas._libs.tslibs.timestamps.Timestamp

现在,如果我们这样做

df[df.date > max_date]

我们正确地得到

                         date
11 2021-03-27 18:49:37.243613
12 2021-03-28 18:49:37.243613
13 2021-03-29 18:49:37.243613
14 2021-03-30 18:49:37.243613
15 2021-03-31 18:49:37.243613
16 2021-04-01 18:49:37.243613
17 2021-04-02 18:49:37.243613
18 2021-04-03 18:49:37.243613
19 2021-04-04 18:49:37.243613
20 2021-04-05 18:49:37.243613

你得到了哪个错误?


推荐阅读