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.date
和 Timestamp.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/