【问题标题】:filtering date column in python在python中过滤日期列
【发布时间】:2018-11-14 16:38:59
【问题描述】:

我是 python 新手,我面临以下问题。我有一个由 2 列组成的数据框,其中之一是日期(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

【问题讨论】:

  • 什么是dfpd
  • df 是我的数据框的名称,pd 代表 Pandas
  • df[df['date'] >= last_year] 应该这样做
  • @JacquesGaudin 尝试了你的建议,但没有奏效

标签: python pandas date datetime filtering


【解决方案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

【讨论】:

    【解决方案2】:

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

    last_year = pd.to_datetime('today') + pd.DateOffset(years=-1)
    
    new_df = df[pd.to_datetime(df.mydate) >= last_year]
    

    因此,我们需要查看您的所有代码以确定错误背后的原因;比如start_time是怎么定义的?

    【讨论】:

      【解决方案3】:

      试试

      today = datetime.datetime.now()
      

      【讨论】:

        猜你喜欢
        • 2019-04-18
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-18
        相关资源
        最近更新 更多