Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 浮动日期转换_Python_Datetime_Numpy_Matplotlib_Pandas - Fatal编程技术网

Python 浮动日期转换

Python 浮动日期转换,python,datetime,numpy,matplotlib,pandas,Python,Datetime,Numpy,Matplotlib,Pandas,我正在使用Pandas和Matplotlib创建两个相同的日期范围。将numpy.float64转换为Pandas时间戳后,我有1分钟的差异-为什么 import pandas as pd import matplotlib.dates as mdates import datetime as dt dstart = dt.date(2013,12,5) dend = dt.date(2013,12,10) d1 = pd.date_range(dstart, dend, freq='H')

我正在使用Pandas和Matplotlib创建两个相同的日期范围。将numpy.float64转换为Pandas时间戳后,我有1分钟的差异-为什么

import pandas as pd
import matplotlib.dates as mdates
import datetime as dt

dstart = dt.date(2013,12,5)
dend = dt.date(2013,12,10)

d1 = pd.date_range(dstart, dend, freq='H')
d2 = mdates.drange(dstart, dend, dt.timedelta(hours=1))

print d1[2]
print pd.Timestamp(mdates.num2date(d2[2]))
并得到结果:

2013-12-05 02:00:00
2013-12-05 02:01:00.504201+00:00

请注意,两个范围的长度也不相同:

>>> len(d1)
121
>>> len(d2)
120
我认为这可能被认为是
mdates.drange
中的一个错误,但是引入错误是因为您使用
日期
作为输入,而没有
日期时间
(这也是文档字符串所说的)。至少,我认为,
mdates.drange
可以检查这一点。
使用
datetimes
时,如预期:

In [50]: dstart = dt.datetime(2013,12,5)
In [51]: dend = dt.datetime(2013,12,10)
In [52]: d1 = pd.date_range(dstart, dend, freq='H')
In [53]: d2 = mdates.drange(dstart, dend, dt.timedelta(hours=1))
In [54]: print d1[2]
2013-12-05 02:00:00

In [55]: print pd.Timestamp(mdates.num2date(d2[2]))
2013-12-05 02:00:00+00:00
请注意,长度仍然不同,因为
mdates.drange
生成一个半开区间(因此
dend
不包括在内),而
pd.date\u range
生成一个闭合区间



对此失败原因的技术解释是,由于
日期
(),在
mdates.drange
中计算范围的结束值出错。在您的情况下,最终值以小时为单位,但使用日期会忽略小时,并创建错误的间隔。

谢谢!但是有没有任何理由说明dt.date(2013,12,5)不等于dt.datetime(2013,12,5)。第一个是
date
对象,第二个是
datetime
对象。和
date
对象没有关于小时、分钟等的信息。