我在大熊猫数据框中有很多日期,大多数是在每年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]
我在这里做错了什么想法?
答案 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]