Pandas 数据框检查列中的日期是否小于自定义日期?

标签 pandas dataframe datetime

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

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

最佳答案

使用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.ge小于或等于 - Series.le :

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.lt , Series.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

关于 Pandas 数据框检查列中的日期是否小于自定义日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60520797/

相关文章:

Python dataframe - 根据列删除连续的行

r - 使用 R 中 data.frame 的列从转换矩阵中提取值

c# - 如何以不同的格式格式化 DateTime?

python - 如何按月份和年份输入过滤具有日期时间索引的数据框? Pandas

python - 在 python 中标准化复杂的 Json

python - 为多索引数据框的每个索引排序列

python - Pandas 分层列

python - dask 计算存储结果吗?

python - Pandas ,多索引

javascript - 仅使用年(没有月或日)与谷歌时间线图表