Python pandas将date_range应用于两列

时间:2016-04-08 16:16:33

标签: python date pandas range

我的数据框如下所示:

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的正确方法是什么?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

pd.date_range没有返回间隔。它在start和end之间返回所有 datetime对象的系列(DateTimeIndex)。 由于此处的开头为reported_date并且是可变的,而结尾为current_date且已修复,因此您会获得一系列不同的长度,这显然不适合单个(新)列。

之前使用的减法为您提供日期之间的间隔。因此没有理由使用pd.date_rangex[1] - x[0]完全符合您的要求。