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

Preserving datetime type when converting from CSV to HDF5 with vaex

我有一个 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,并存储 with/without 引号。结果是一样的。 在从 csv 转换为 hdf5 时,有什么方法可以强制 vaex 将时间戳识别为日期时间(或 np.datetime64)?

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

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

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

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

使用类似

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

应该可以解决问题。

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