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)
相关主题
pandas把一列日期转换为星期
3回答
Pandas怎样对dataframe中的一个时间列进行排序?
1回答
pandas里dt.dayofweek返回的0是星期几?
1回答
怎么把collections.Counter的计数结果转为pandas的DataFrame
2回答
pandas dataframe insert报错ValueError: unbounded slice
1回答
pandas同时返回一个dataframe的前几行(head)和后几行(tail)
2回答
对pandas.DataFrame进行groupby结果中index的问题
2回答
嵌套dictionary类型数据转成pandas dataframe的问题
2回答
pandas里index的问题
1回答
我们谢绝在回答前讲“生动”的故事。
我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。
我们谢绝答非所问。
我们谢绝自己不会、硬要回答。
我们感激每一个用户在编写答案时的努力与付出!