【发布时间】:2022-10-05 02:10:15
【问题描述】:
我正在尝试使用 pyarrow 将数据从 csv 加载到镶木地板文件中。我正在使用转换选项将数据类型设置为正确的类型,然后使用 timestamp_parsers 选项来指示应如何解释时间戳数据:请参阅下面的“csv”:
time,data
01-11-19 10:11:56.132,xxx
请在下面查看我的代码示例。
import pyarrow as pa
from pyarrow import csv
from pyarrow import parquet
convert_dict = {
'time': pa.timestamp('us', None),
'data': pa.string()
}
convert_options = csv.ConvertOptions(
column_types=convert_dict
, strings_can_be_null=True
, quoted_strings_can_be_null=True
, timestamp_parsers=['%d-%m-%y %H:%M:%S.%f']
)
table = csv.read_csv('test.csv', convert_options=convert_options)
print(table)
parquet.write_table(table, 'test.parquet')
基本上,pyarrow 不喜欢某些 strptime 值。特别是在这种情况下,它不喜欢小数秒的“%f”(https://www.geeksforgeeks.org/python-datetime-strptime-function/)。任何帮助 pyarrow 做我需要的事情都将不胜感激。
为了清楚起见,如果我将数据编辑为没有小数秒,然后从 timestamp_parsers 选项中删除“%f”,我可以让代码运行。但是我需要保持数据的完整性,所以这不是一个选项。对我来说,这似乎是 pyarrow 中的一个错误,或者我是个白痴并且遗漏了一些明显的东西。对这两个选项都开放只是想知道它是哪个。
【问题讨论】:
标签: pyarrow strptime apache-arrow