datetime64[ns] 与 date 的比较

Jan*_*ará 4 python datetime date pandas

我的 DataFrame 的值如下所示

    Date        Value 
1   2020-04-12  A
2   2020-05-12  B   
3   2020-07-12  C   
4   2020-10-12  D
5   2020-11-12  E
Run Code Online (Sandbox Code Playgroud)

我只需要创建新的 DataFrame,其中包含从今天(7.12)到未来的日期(在本例中仅第 3、4 和 5 行)。

我使用这段代码:

df1= df[df["Date"] >= date.today()]
Run Code Online (Sandbox Code Playgroud)

但它给了我TypeError: dtype=datetime64[ns] 和 date 之间的比较无效

我究竟做错了什么?谢谢你!

Nie*_*ens 6

使用列.dt.date上的df['Date']。然后您将日期与日期进行比较。所以:

df1 = df.loc[df['Date'].dt.date >= date.today()]
Run Code Online (Sandbox Code Playgroud)

这会给你:

        Date Value
3 2020-12-07     C
4 2020-12-10     D
5 2020-12-11     E
Run Code Online (Sandbox Code Playgroud)

还要确保您的日期格式实际上是正确的。例如通过 printdf['Date'].dt.month看到它给出了 all12的。如果不是,则您的日期字符串未正确转换。在这种情况下,请df['Date'] = pd.to_datetime(df['Date'], format="%Y-%d-%m")在创建 DataFrame 后将日期列转换为正确的日期时间格式。