gpt4 book ai didi

python - float 日期转换

转载 作者:行者123 更新时间:2023-11-28 17:44:11 24 4
gpt4 key购买 nike

我正在使用 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 中的错误,但引入错误是因为您使用 dates 作为输入而没有使用 datetimes (这是文档字符串也说它应该是什么)。我认为至少 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_range 产生闭区间。


为什么失败的技术解释是 mdates.drange 中的范围结束值的计算由于 date ( https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/dates.py#L361 ) 而出错.在您的情况下,最终值将以小时为单位,但通过使用日期,小时数将被忽略,并且会创建错误的间隔。

关于python - float 日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com