【问题标题】:Filter data frame based on date columns pandas根据日期列熊猫过滤数据框
【发布时间】:2020-05-05 00:52:46
【问题描述】:

我有一个如下图所示的 pandas 数据框。

Unit_ID    Added_Date                   Status         
105        2019-10-02 07:18:18          Rented
106        2020-15-01 07:18:17          Rented
105        2019-10-02 07:18:19          Rented
108        2020-15-01 07:18:18          Vacant

从上面我想根据 Date 列找出最近 10 天内添加的 Unit_ID。

预期输出:

Unit_ID    Added_Date                   Status         
106        2020-15-01 07:18:17          Rented
108        2020-15-01 07:18:18          Vacant

【问题讨论】:

    标签: pandas datetime pandas-groupby


    【解决方案1】:

    您还可以使用.dt.days 访问器并与le 10 进行比较:

    #df['Added_Date']=pd.to_datetime(df['Added_Date'],format='%Y-%d-%m %H:%M:%S')
    df[(pd.to_datetime('today') - df['Added_Date'] ).dt.days.le(10)]
    

       Unit_ID          Added_Date  Status
    1      106 2020-01-15 07:18:17  Rented
    3      108 2020-01-15 07:18:18  Vacant
    

    【讨论】:

      【解决方案2】:

      这是一种方法:

      today = pd.to_datetime('today')
      n = 10 # last n days
      
      filter_criteria = df['Added_Date'].sub(today).abs().apply(lambda x: x.days <= n)
      
      df.loc[filter_criteria]
      
           Unit_ID Added_Date           Status
      106      106 2020-01-15 07:18:17  Rented
      108      108 2020-01-15 07:18:18  Vacant
      

      【讨论】:

        【解决方案3】:

        这是使用pd.DateOffset的另一种方式

        from datetime import datetime
        df.loc[df['Added_Date'] >= (datetime.today() - pd.DateOffset(days=10))]
        

           Unit_ID          Added_Date  Status
        1      106 2020-01-15 07:18:17  Rented
        3      108 2020-01-15 07:18:18  Vacant
        

        【讨论】:

          猜你喜欢
          • 2021-08-19
          • 2013-06-09
          • 1970-01-01
          • 2021-12-01
          • 2018-01-18
          • 2014-12-27
          • 2020-08-08
          • 2019-12-09
          • 1970-01-01
          相关资源
          最近更新 更多