python中的筛选日期列

python中的筛选日期列,python,pandas,date,datetime,filtering,Python,Pandas,Date,Datetime,Filtering,我是python新手,面临以下问题。我有一个由两列组成的数据框,其中一列是date(datetime64[ns])。我想保存过去12个月内的所有记录。我的代码如下: today=start_time.date() last_year = today + relativedelta(months = -12) new_df = df[pd.to_datetime(df.mydate) >= last_year] 当我运行它时,会收到以下消息: 类型错误:类型对象2017-06-05 有什么

我是python新手,面临以下问题。我有一个由两列组成的数据框,其中一列是date(datetime64[ns])。我想保存过去12个月内的所有记录。我的代码如下:

today=start_time.date()
last_year = today + relativedelta(months = -12)
new_df = df[pd.to_datetime(df.mydate) >= last_year]
当我运行它时,会收到以下消息: 类型错误:类型对象2017-06-05

有什么想法吗? 去年似乎给我带来了我想要的日期,格式如下:2017-06-05

today = datetime.datetime.now()

您可以对
datetime
对象使用
pandas
功能。语法通常更直观,无需额外导入

last_year = pd.to_datetime('today') + pd.DateOffset(years=-1)

new_df = df[pd.to_datetime(df.mydate) >= last_year]

因此,我们需要查看您的所有代码,以确定错误背后的原因;例如,如何定义开始时间?

在pandas中创建时间增量对象以增加日期(12个月)。调用pandas.Timstamp('now')获取当前日期。然后创建一个日期范围。下面是一个获取12个月月度数据的示例

import pandas as pd
import datetime
list_1 = [i for i in range(0, 12)]
list_2 = [i for i in range(13, 25)]
list_3 = [i for i in range(26, 38)]

data_frame = pd.DataFrame({'A': list_1, 'B': list_2, 'C':list_3}, pd.date_range(pd.Timestamp('now'), pd.Timestamp('now') + pd.Timedelta           (weeks=53), freq='M'))
我们为当前日期创建一个时间戳,并将其输入为开始日期。然后我们创建一个timedelta,将该日期增加53周(或者52周,如果您愿意的话),这将为我们提供12个月的数据。以下是输出:

                              A   B   C
 2018-06-30 05:05:21.335625   0  13  26
 2018-07-31 05:05:21.335625   1  14  27
 2018-08-31 05:05:21.335625   2  15  28
 2018-09-30 05:05:21.335625   3  16  29
 2018-10-31 05:05:21.335625   4  17  30
 2018-11-30 05:05:21.335625   5  18  31
 2018-12-31 05:05:21.335625   6  19  32
 2019-01-31 05:05:21.335625   7  20  33
 2019-02-28 05:05:21.335625   8  21  34
 2019-03-31 05:05:21.335625   9  22  35
 2019-04-30 05:05:21.335625  10  23  36
 2019-05-31 05:05:21.335625  11  24  37

什么是
df
pd
?df是我的数据帧的名称,pd代表
df[df['date']>=去年]
的可能副本do@JacquesGaudin我听了你的建议,但没用