0

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

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 将时间戳识别为日期时间(或 np.datetime64)?

4

1 回答 1

0

我认为问题在于当您将数据从 csv 转换为 hdf5 时,数据类型是字符串。我的测试显示保存和打开具有 datetime 和 timedelta 数据类型的 hdf5 没有问题。

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

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

在这种情况下,vaex(或 pandas,因为read_csv它只是一个pd.read_csv带有一些额外选项的包装器)不知道列应该是字符串还是日期时间,所以默认情况下它选择字符串,然后传播。

使用类似的东西

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

应该做的伎俩。

如果我对此的假设是错误的,请确保在导出到 HDF5 之前所有 dtype 都符合您的要求。

于 2020-10-19T22:45:56.877 回答