dataframe中有两列数据'begin_date'和'end_date',现在通过这两列计算新的一列'work_days'。
'begin_date'和'end_date'的数据格式均为:Timestamp
需求:
1.如果'end_date'为空,则用当前日期 - 'begin_date';
2.如果''end_date'不为空,则'end_date' - 'begin_date'。
我的方法:
date_today = datetime.datetime.now().strftime("%Y-%m-%d")
date_today = pd.to_datetime(date_today)
a = map(lambda x, y: date_today - x if y == 'NaT' else y - x, df['begin_date'], df['end_date'])
df['work_days'] = list(a)
运行结果:
如上图所示,'end_date'不为空计算正常,'end_date'为空,就是结果仍然是'NaT'。
本人新手,求大佬们指点!!
1个回答
不需要你写的那么复杂吧
days_to_today = (pd.to_datetime('today') - df['begin_date']).dt.days
df['workdays'] = (df['end_date'] - df['begin_date']).dt.days.fillna(days_to_today)