datetime:从自身减去日期产生3288天

时间:2015-03-24 19:08:20

标签: python datetime numpy pandas

我在大熊猫数据框中有很多日期,大多数是在每年7月观察到的datetime64[ns]类型。

In [126]:

e6.To.head()
Out[122]:
14   1991-07-01
15   1992-07-01
16   1993-07-01
17   1994-07-01
18   1995-07-01
Name: To, dtype: datetime64[ns]

我最终想要使用shift()在单独的变量中存储从一行到下一行的滚动差异,但我发现减去日期以产生奇数结果。在这里,我从自身中减去一系列日期(重印前五个结果。其中一些是正如预期的那样,0,但其他人显然不是。

In [127]:

(e6.To-e6.To).head()
Out[127]:
1       0 days
1   -3288 days
1    3288 days
1       0 days
2       0 days
Name: To, dtype: timedelta64[ns]

如果我只选择前五个观察值然后减去,我就不会得到这个结果,并按预期得到全部0:

In [128]:

e6.To.head()-e6.To.head()
Out[119]:
14   0 days
15   0 days
16   0 days
17   0 days
18   0 days
Name: To, dtype: timedelta64[ns]

如果我输入'我就无法复制它。直接数据,如下:

In [128]:

test=pd.DataFrame(data=['1991-07-01','1992-07-01','1993-07-01','1994-07-01','1995-07-01','1996-07-01'],columns=['date'])
test['date']=test['date'].astype('datetime64')
test.date - test.date
Out[128]:
0   0 days
1   0 days
2   0 days
3   0 days
4   0 days
5   0 days
Name: date, dtype: timedelta64[ns]

我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:1)

不是一个答案,但我需要一些空间来展示一些东西。我的猜测是有一些奇怪的事情正在进行索引(我不知道为什么)。请注意我对上述索引的评论,并注意@ASGM关于差异非常接近9年的评论。

我正在使用你的代码创建上面的示例数据,但是添加了几年并坚持数据框的'e6'名称和重要事件中的'To'(我真的怀疑它) ,但你知道......)

In [10]: e6
Out[10]: 
           To
0  1991-07-01
1  1992-07-01
2  1993-07-01
3  1994-07-01
4  1995-07-01
5  1996-07-01
6  1997-07-01
7  1998-07-01
8  1999-07-01
9  2000-07-01
10 2001-07-01
11 2002-07-01

In [11]: e6.To - e6.To[9]
Out[11]: 
0    -3288 days
1    -2922 days
2    -2557 days
3    -2192 days
4    -1827 days
5    -1461 days
6    -1096 days
7     -731 days
8     -366 days
9        0 days
10     365 days
11     730 days
Name: To, dtype: timedelta64[ns]