我正在努力将浮点数组(带小数点的数字)转换为datetime。我得到的是一个巨大的数组,其中包含非整数(比如用microsoftexcel生成的那些),表示某个日期之后的几天。
如果我只对一个浮点数,比如28.79167,从2014年1月1日开始计算,我会按如下方式进行:date = datetime(2014,01,01) + timedelta(days=28.79167)
print date
Out[142]: datetime.datetime(2014, 1, 29, 19, 0, 0, 288000)
看起来是对的!
但是,当我有一个数组时,请说下面这个:
^{pr2}$
然后我会这样做:date = [datetime(2014,01,01) + timedelta(days=dcc[i]) for i in dcc]
它给出了:/usr/bin/ipython:1: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future #! /usr/bin/python
print date
Out[138]:
[datetime.datetime(2014, 1, 1, 0, 0),
datetime.datetime(2014, 1, 1, 0, 0),
datetime.datetime(2014, 1, 1, 12, 0),
datetime.datetime(2014, 1, 1, 12, 0),
datetime.datetime(2014, 1, 2, 0, 0),
datetime.datetime(2014, 1, 2, 0, 0),
datetime.datetime(2014, 1, 2, 12, 0),
datetime.datetime(2014, 1, 2, 12, 0),
datetime.datetime(2014, 1, 3, 0, 0),
datetime.datetime(2014, 1, 3, 0, 0),
datetime.datetime(2014, 1, 3, 12, 0),
datetime.datetime(2014, 1, 3, 12, 0),
datetime.datetime(2014, 1, 4, 0, 0),
datetime.datetime(2014, 1, 4, 0, 0),
datetime.datetime(2014, 1, 4, 12, 0),
datetime.datetime(2014, 1, 4, 12, 0),
datetime.datetime(2014, 1, 5, 0, 0),
datetime.datetime(2014, 1, 5, 0, 0),
datetime.datetime(2014, 1, 5, 12, 0),
datetime.datetime(2014, 1, 5, 12, 0)]
这显然不是我想要的。
另一种获取整数的方法是简单地将日期转换为秒,然后像以前一样使用timedelta,但是看看会发生什么:date = [datetime(2014,01,01) + timedelta(seconds=dcc[i]*86400) for i in dcc*86400]
注意在timedelta now中使用了“seconds”而不是“days”。结果如下:IndexError: index 43200 is out of bounds for axis 0 with size 20
我试过很多次网络搜索,但要么没有人提出同样的问题,要么我在某个地方犯了一个巨大的错误。。。在
有人能帮忙吗?提前谢谢!在