我的数据框如下所示:
df[['reported_date', 'current_date']].head()
reported_date current_date
0 2016-01-15 13:58:21 2016-01-18 00:00:00
1 2016-01-14 10:51:24 2016-01-18 00:00:00
2 2016-01-15 15:17:35 2016-01-18 00:00:00
3 2016-01-17 17:07:10 2016-01-18 00:00:00
4 2016-01-17 17:08:23 2016-01-18 00:00:00
我可以直接应用日期减法,如:
df[['reported_date', 'current_date']].head().apply(lambda x: x[1]-x[0], axis=1)
但是当我尝试应用date_range来获取我得到以下错误的日期之间的间隔时
df[['reported_date', 'current_date']].head().apply(lambda x: pd.date_range(x[0], x[1], freq='B'), axis=1)
"ValueError: Length of values does not match length of index"
那么将date_range()
应用于两列datetime
的正确方法是什么?
提前谢谢。
建
答案 0 :(得分:2)
pd.date_range
没有返回间隔。它在start和end之间返回所有 datetime对象的系列(DateTimeIndex
)。
由于此处的开头为reported_date
并且是可变的,而结尾为current_date
且已修复,因此您会获得一系列不同的长度,这显然不适合单个(新)列。
之前使用的减法为您提供日期之间的间隔。因此没有理由使用pd.date_range
:x[1] - x[0]
完全符合您的要求。