我是python的新手,我面临以下问题。我有一个由2列组成的数据框,其中一列是date(datetime64 [ns])。我想保留过去12个月内的所有记录。我的代码如下:
today=start_time.date()
last_year = today + relativedelta(months = -12)
new_df = df[pd.to_datetime(df.mydate) >= last_year]
当我运行它时,我收到以下消息: TypeError:类型对象2017-06-05
有什么想法吗? last_year似乎按以下格式给我提供了我想要的日期:2017-06-05
答案 0 :(得分:1)
在pandas中创建一个时间增量对象以增加日期(12个月)。调用pandas.Timstamp('now')获取当前日期。然后创建一个date_range。以下是获取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
答案 1 :(得分:0)
尝试
today = datetime.datetime.now()
答案 2 :(得分:0)
您可以对pandas
个对象使用datetime
功能。语法通常更直观,无需额外导入。
last_year = pd.to_datetime('today') + pd.DateOffset(years=-1)
new_df = df[pd.to_datetime(df.mydate) >= last_year]
因此,我们需要查看您的所有代码以确定错误背后的原因;例如,如何定义start_time
?