我目前正在尝试将一个没有任何标题的大 csv 文件(50GB+)导入到 pyarrow 表中,总体目标是将此文件导出为 Parquet 格式,并进一步在 Pandas 或 Dask DataFrame 中处理它。如何在 pyarrow 中为 csv 文件指定列名和列 dtype?
我已经考虑将标头附加到 csv 文件中。这会强制完全重写文件,这看起来像是不必要的开销。据我所知,pyarrow 提供了模式来定义特定列的 dtypes,但是文档在将 csv 文件转换为箭头表时缺少这样做的具体示例。
想象一下,这个 csv 文件只是一个简单的例子,即两列“A”和“B”。我当前的代码如下所示:
import numpy as np
import pandas as pd
import pyarrow as pa
df_with_header = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
print(df_with_header)
df_with_header.to_csv("data.csv", header=False, index=False)
df_without_header = pd.read_csv('data.csv', header=None)
print(df_without_header)
opts = pa.csv.ConvertOptions(column_types={'A': 'int8',
'B': 'int8'})
table = pa.csv.read_csv(input_file = "data.csv", convert_options = opts)
print(table)
如果我打印出最终表格,它不会更改列的名称。
pyarrow.Table
1: int64
3: int64
我现在如何更改加载的列名和 dtypes?是否还有可能例如传入包含名称及其数据类型的字典?