【问题标题】:Pandas dataframe check if date in a column is less than custom days?熊猫数据框检查列中的日期是否小于自定义天数?
【发布时间】:2020-03-04 07:15:47
【问题描述】:

df 有两列名称和日期(任何格式的日期 - 字符串格式/日期时间格式)。 目前是字符串格式。

df

            name      date              

    0       john     2019-08-24 05:30:30

    1       jude     2020-03-03 21:15:03

如果date 距离当前时间不到 10 天,则添加一个新列(输出),否则为 false。

预期输出

          name      date                 output  

  0       john     2019-08-24 05:30:30    False

  1       jude     2020-03-03 21:15:03    True

【问题讨论】:

    标签: pandas dataframe datetime


    【解决方案1】:

    使用 Series.between 减去 10 天的当前日期时间和当前日期时间:

    #if necessary
    df['date'] = pd.to_datetime(df['date'])
    
    now = pd.to_datetime('now')
    df['output'] = df['date'].between(now - pd.Timedelta(10, 'd'), now)
    

    对于greater or equal - Series.geless or equal - Series.le,它的工作方式与按位 AND 的链式掩码相同:

    df['output'] = df['date'].ge(now - pd.Timedelta(10, 'd')) & df['date'].le(now)
    #alternative
    #df['output'] = (df['date'] >= now - pd.Timedelta(10, 'd')) & (df['date'] <= now)
    
    print (df)
       name                date  output
    0  john 2019-08-24 05:30:30   False
    1  jude 2020-03-03 21:15:03    True
    

    如果想要其他组合可以使用Series.ltSeries.gt, Series.le, Series.ge.

    如果想省略时间并仅使用日期,请添加 Series.dt.dateTimestamp.date

    #if necessary
    df['date'] = pd.to_datetime(df['date'])
    
    now = pd.to_datetime('now').date()
    df['output'] = df['date'].dt.date.between(now - pd.Timedelta(10, 'd'), now)
    print (df)
       name                date  output
    0  john 2019-08-24 05:30:30   False
    1  jude 2020-03-03 21:15:03    True
    

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      相关资源
      最近更新 更多