(Python 2.7,熊猫 0.9)
这似乎是一件简单的事情,但我不知道如何使用 Pandas 计算数据框中两个日期列之间的差异。此数据框已经有一个索引,因此不希望将任一列设为 DateTimeIndex。
要从我使用的字符串转换每个日期列:
data.Date_Column = pd.to_datetime(data.Date_Column)
从那里,为了获得两列之间的经过时间,我这样做:
data.Closed_Date - data.Created_Date
返回错误:
TypeError: %d format: a number is required, not a numpy.timedelta64
检查两列上的 dtypes 产生 datetime64[ns] 并且数组中的各个日期是时间戳类型。
我错过了什么?
编辑:
这是一个示例,我可以创建单独的 DateTimeIndex 对象并完成我想要的,但是当我尝试在数据框的上下文中执行它时,它失败了。
Created_Date = pd.DatetimeIndex(data['Created_Date'], copy=True)
Closed_Date = pd.DatetimeIndex(data['Closed_Date'], copy=True)
Closed_Date.day - Created_Date.day
[Out] array([ -3, -16, 5, ..., 0, 0, 0])
现在相同,但在数据框中:
data.Created_Date = pd.DatetimeIndex(data['Created_Date'], copy=True)
data.Closed_Date = pd.DatetimeIndex(data.Closed_Date, copy=True)
data.Created_Date.day - data.Created_Date.day
AttributeError: 'Series' object has no attribute 'day'
如果您想尝试一下,这里有一些数据:
data['Created Date'][0:10].to_dict()
{0: '1/1/2009 0:00',
1: '1/1/2009 0:00',
2: '1/1/2009 0:00',
3: '1/1/2009 0:00',
4: '1/1/2009 0:00',
5: '1/1/2009 0:00',
6: '1/1/2009 0:00',
7: '1/1/2009 0:00',
8: '1/1/2009 0:00',
9: '1/1/2009 0:00'}
data['Closed Date'][0:10].to_dict()
{0: '1/7/2009 0:00',
1: nan,
2: '1/1/2009 0:00',
3: '1/1/2009 0:00',
4: '1/1/2009 0:00',
5: '1/12/2009 0:00',
6: '1/12/2009 0:00',
7: '1/7/2009 0:00',
8: '1/10/2009 0:00',
9: '1/7/2009 0:00'}