熊猫数据框检查列中的日期是否少于自定义日期?

时间:2020-03-04 07:15:47

标签: pandas dataframe datetime

df有两列name和date(日期可以是任何格式-字符串格式/ datetime格式)。 当前为字符串格式。

df

            name      date              

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

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

如果date距当前时间少于10天,请向其添加一个新列(输出),为false,否则为true。

预期产量

          name      date                 output  

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

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

1 个答案:

答案 0 :(得分: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)

对于AND-Series.gegreater or equal-Series.le,按位less or equal就像按位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 的链掩码一样工作:

#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

如果需要其他组合,请使用Series.ltSeries.gtSeries.leSeries.ge

如果要省略时间并仅处理日期,请添加Series.dt.dateTimestamp.date

if (next.compareTo(maximum) > 0) {
                        maximum = next;
                    }