【发布时间】:2021-06-21 14:54:15
【问题描述】:
我对 python 很陌生,并尝试了一些功能。我在这里搜索了很多可能的解决方案,但没有成功。这是我的问题:
目标:
-
从 .xlsx 文件中读取包含日期和时间的列 --> 有效
-
在 numpy 数组中获取此列 --> 有效
-
数组项作为对象从 .xlsx 中读取
数组输出如下所示:
['2020-11-09 20:30:59' '2020-11-08 09:22:54' '2020-11-04 02:24:17' ...
'1900-01-27 02:30:00' '1900-01-24 03:00:00' '1900-01-18 15:30:00']
- 将日期和时间转换为浮点数-->不起作用
我尝试了以下方法:
x[:, 0] = [np.datetime64(x[:, 0])]
--> 这不起作用;所以我之前尝试过转换成String。
x[:, 0] = [np.datetime64(str(x[:, 0]))]
--> 这也不适用于此错误消息:
ValueError: Error parsing datetime string "['2020-11-09 20:30:59' '2020-11-08 09:22:54' '2020-11-04 02:24:17' ...
'1900-01-27 02:30:00' '1900-01-24 03:00:00' '1900-01-18 15:30:00']" at position 0
那么问题出在哪里?
非常感谢您的回答!它似乎适用于 datetime64 转换。我确实改变了。
np.array(alist, 'datetime64[ms]')
到
np.array(alist, 'datetime64[ns]')
我得到 datetime64 作为整数。然而,我怎么会在输出中看到早期日期的负值?
-----------------------------------------------------
--> Before conversion: ['2020-11-09 20:30:59' '2020-11-08 09:22:54' '2020-11-04 02:24:17' ...
'1900-01-27 02:30:00' '1900-01-24 03:00:00' '1900-01-18 15:30:00']
-----------------------------------------------------
--> After conversion to dt64: [1604953859000000000 1604827374000000000 1604456657000000000 ...
-2206733400000000000 -2206990800000000000 -2207464200000000000]
-----------------------------------------------------
【问题讨论】:
-
如果您想将数据类型更改为日期时间,您可以使用
x.astype('datetime64[ms]’) -
第一个“不起作用”错误缺少详细信息 - 实际代码和错误消息。最后一种情况的错误应该很清楚。
str(x[:,0])是""、括号、空格和 '' 字符串之间的所有内容。 -
我想在机器学习模型中使用日期和时间作为浮点数,所以我需要转换为浮点数,然后在 cpnvert 上转换回日期和时间。
-
重点是:如果你转换成整数,你会得到Unix time,这是相对时间到1970-01-01(“Unix时间纪元”),所以该日期之前的值将是负数。
标签: python string numpy datetime