使用 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 都符合您的要求。
我有一个 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 都符合您的要求。