我正在尝试使用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/)。如果你能帮我做我需要的事,我将不胜感激。
为了明确起见,如果我将数据编辑为没有小数秒,然后从timestamp_parsers选项中删除"%f“,我就可以让代码运行。然而,我需要保持数据的完整性,所以这不是一种选择。对我来说,这就像是一个小虫子,或者说我是个白痴,而且漏掉了一些显而易见的东西。两种选择都开放,只是想知道它是哪一种。
发布于 2022-10-04 18:10:15
因此,我发现对于时间戳数据,您应该尝试使用默认解析器格式(ISO8601)的数据。例如,如果使用py箭头时间戳数据类型将csv数据转换为拼图。只需使用这种格式的csv数据:
无时区
YYYY-MM-DDTHH:MI:SS.FF6
随时区
YYYY-MM-DDTHH:MI:SS.FF6TZH:TZM
https://stackoverflow.com/questions/73780443
复制相似问题