使用vaex从CSV转换为HDF5时保留日期时间类型

问题描述

我有一个带有时间列的csv文件,用于存储时间戳。使用vaex.from_csv()方法将此文件转换为hdf5格式后,time列中的值为字符串。例如:

df = vaex.open("data.csv.hdf5")
time = df["time"].values[0]
print(time)
print(type(time))

输出为:

2020-09-30 01:02:03
<class 'str'>

我尝试将时间戳格式化为ISO 8601,并存储带/不带引号的内容。结果是一样的。 从CSV转换为hdf5时,是否有某种方法可以迫使vaex将时间戳识别为datetime(或np.datetime64)?

解决方法

我认为问题在于,当您将数据从csv转换为hdf5时,数据类型为字符串。我的测试表明,使用日期时间和timedelta数据类型保存和打开hdf5并没有问题。

查看文件名,您可能使用了类似的

df = vaex.read_csv(path_to_csv,convert=True)

在这种情况下,vaex(或大熊猫,因为read_csv只是pd.read_csv的包装,并带有一些其他选项)不知道列应该是字符串还是日期时间,因此默认情况下选择字符串,然后将其传播。

使用类似

df = vaex.read_csv(path_to_csv,parse_dates=['my_date_column'],convert=True)

应该可以解决问题。

如果我的假设是错误的,只需在导出到HDF5之前确保所有dtypes符合您的要求即可。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...