【问题标题】:Check if a date column is in a range of dates - pandas检查日期列是否在日期范围内 - 熊猫
【发布时间】:2019-07-07 00:14:18
【问题描述】:

我必须检查日期列是否在一个范围内。特别是我必须检查它是否包含在另一个日期 +/- n 天给定的范围内。假设我的数据框是:

import pandas as pd
d = {
'date1': ['2019-09-11', '2019-09-12', '2019-08-02'], 
'date2': ['2019-10-11', '2019-09-24', '2019-11-11']
}
df = pd.DataFrame(d)

我必须检查 (date2 - 5 days)

【问题讨论】:

    标签: python pandas date calculated-columns


    【解决方案1】:

    使用between 加上和减去5 天的时间增量并通过boolean indexing 过滤:

    d = {
    'date1': ['2019-09-11', '2019-09-12', '2019-08-02'], 
    'date2': ['2019-09-14', '2019-09-08', '2019-11-11']
    }
    #changed data for match
    df = pd.DataFrame(d)
    print (df)
            date1       date2
    0  2019-09-11  2019-09-14
    1  2019-09-12  2019-09-08
    2  2019-08-02  2019-11-11
    
    c = ['date1','date2']
    df[c] = df[c].apply(pd.to_datetime)
    
    a = df['date2'] - pd.Timedelta(5, unit='d')
    b = df['date2'] + pd.Timedelta(5, unit='d')
    
    df = df[df['date1'].between(a, b, inclusive=False)]
    print (df)
    
           date1      date2
    0 2019-09-11 2019-09-14
    1 2019-09-12 2019-09-08
    

    DataFrame.query 的另一种解决方案:

    df = df.query('@start < date1 < @end')
    print (df)
    
           date1      date2
    0 2019-09-11 2019-09-14
    1 2019-09-12 2019-09-08
    

    【讨论】:

    • 如果可以的话,我也想给你的个人资料介绍一个 +1
    • @kerwei - 没必要。顺便说一句,如果检查我的个人资料,你认为电子邮件代码是愚蠢的吗?我的想法是阻止不询问熊猫的人与我联系。
    • @kerwei - 谢谢。
    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    相关资源
    最近更新 更多