pandas dataframe 日期间隔天数计算问题

  统计/机器学习 数据预处理 时间序列 Python    浏览次数:180        分享
0


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'。

本人新手,求大佬们指点!!


 

Bobby   2020-06-24 13:30



   1个回答 
2

不需要你写的那么复杂吧

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)


SofaSofa数据科学社区DS面试题库 DS面经

robin_he   2020-06-25 01:00



  相关主题

pandas把一列日期转换为星期   3回答

pandas中获取一列日期和今天相差的天数   2回答

pandas里dt.dayofweek返回的0是星期几?   1回答

Pandas怎样对dataframe中的一个时间列进行排序?   1回答

pandas groupby agg中使用自定义函数   1回答

pandas怎么求一列的移动中位数?   1回答

pandas怎么读入tsv格式的数据   2回答

pd.read_csv报错Error tokenizing data,如何跳过错误的行?   1回答

pandas df.head()报错AttributeError: 'NoneType' object has no attribute 'head'   1回答

pandas df怎么根据weekgroup补齐没有的行呢   1回答

如何重命名pandas的dataframe的列名   2回答

pd.dataframe怎么同时对两个key排序?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!