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

  统计/机器学习 数据预处理 时间序列 Python    浏览次数:5151        分享
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个回答 
3

不需要你写的那么复杂吧

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把一列日期转换为星期

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

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

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

python 如何根据日期进行分组处理

时间序列样本中有负数时怎么求几何平均值?

像年、月、日、小时这种时间变量一般怎么处理?

嵌套dictionary类型数据转成pandas dataframe的问题

pandas dataframe对行去重?

对pandas.DataFrame进行groupby结果中index的问题

  随便看看

分类特征的目标编码是什么意思?

sklearn训练classifier的时候报错Unknown label type

修正R方(adjusted R square)是什么?

tsne被忽视?tsne有什么缺点?

python里清除已经定义过的变量