我用PyArrow创建了数百个实木复合地板文件。但是,其中一些文件的字段/列的名称(我们将其称为Orange)与原始列(称为Sporange)的名称稍有不同,因为其中一个使用了查询的变体。否则,数据(所有其他字段以及所有数据)是相同的。在数据库世界中,我将创建一个ALTER TABLE并重命名该列。但是,我不知道如何使用镶木地板/ PyArrow
是否有一种方法可以重命名文件中的列,而不必重新生成或复制文件?
或者,我可以读取它(假设是read_table或ParquetFile),更改对象中的列(不确定如何执行)并将其写出吗?
我看到了“ rename_columns”,但是不确定它是如何工作的。我尝试单独使用它,它说“未定义rename_columns”。
rename_columns(自己,名称),创建具有重命名为提供名称的列的新表。
非常感谢!
答案 0 :(得分:3)
我怀疑您使用的pyarrow
版本不支持rename_columns
。您可以运行pa.__version__
进行检查吗?
否则,您要执行的操作很简单,在下面的示例中,我将b列重命名为c:
import pyarrow as pa
import pyarrow.parquet as pq
col_a = pa.array([1, 2, 3], pa.int32())
col_b = pa.array(["X", "Y", "Z"], pa.string())
table = pa.Table.from_arrays(
[col_a, col_b],
schema=pa.schema([
pa.field('a', col_a.type),
pa.field('b', col_b.type),
])
)
pq.write_table(table, '/tmp/original')
original = pq.read_table('/tmp/original')
renamed = original.rename_columns(['a', 'c'])
pq.write_table(renamed, '/tmp/renamed')