【问题标题】:subset the data on or before six month advance from today pandas从今天起提前六个月或之前对数据进行子集化 pandas
【发布时间】:2020-05-12 14:32:54
【问题描述】:

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

Unit_ID    Added_Date                   Status         
105        2019-10-02 08:14:16          Rented
106        2020-10-21 07:19:13          Rented
109        2020-03-02 07:18:19          Rented
108        2020-08-01 04:15:28          Vacant
100        2014-10-02 08:14:16          Rented

从上述数据中,我想根据 Additional_Date 列过滤从今天起提前六个月或之前的数据。

预期输出:

Unit_ID    Added_Date                   Status         
105        2019-10-02 08:14:16          Rented
109        2020-03-02 07:18:19          Rented
100        2014-10-02 08:14:16          Rented

【问题讨论】:

    标签: pandas pandas-groupby


    【解决方案1】:

    boolean indexing 中使用Series.betweenoffsets.DateOffset 进行过滤:

    today = pd.to_datetime('now').floor('d')
    offset = pd.offsets.DateOffset(months=6)
    
    df = df[df['Added_Date'].between(today - offset, today + offset)]
    print (df)
       Unit_ID          Added_Date  Status
    0      105 2019-10-02 08:14:16  Rented
    2      109 2020-03-02 07:18:19  Rented
    

    对于今天之前的未来 6 个月之前的过滤器数据,请使用:

    today = pd.to_datetime('now').floor('d')
    offset = pd.offsets.DateOffset(months=6)
    df1 = df[df['Added_Date'] <= today + offset]
    print (df1)
       Unit_ID          Added_Date  Status
    0      105 2019-10-02 08:14:16  Rented
    2      109 2020-03-02 07:18:19  Rented
    4      100 2014-10-02 08:14:16  Rented
    

    【讨论】:

    • 我想对今天或之前的任何日期 + 6 个月进行子集化
    • 更新了示例(输入和预期输出)以更清晰
    • @jezrael,非常抱歉造成混淆,我的要求 - 今天是 2020 年 1 月 27 日。我想在 2020 年 7 月 27 日之前过滤任何数据
    • @ALI - 更简单,给我一分钟
    • @ALI - 你认为今天(2020 年 1 月 27 日)和未来 6 个月(2020 年 1 月 27 日)之间的数据吗?所以通过df = df[df['Added_Date'].between(today, today + offset)]改变第一个解决方案
    猜你喜欢
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2012-04-09
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多