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
答案 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.ge
和greater 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.lt
,
Series.gt
,
Series.le
,
Series.ge
。
如果要省略时间并仅处理日期,请添加Series.dt.date
和Timestamp.date
:
if (next.compareTo(maximum) > 0) {
maximum = next;
}