gpt4 book ai didi

parquet - 如何使用 Pyarrow 更改 Parquet 文件中列的名称?

转载 作者:行者123 更新时间:2023-12-01 21:23:49 31 4
gpt4 key购买 nike

我有数百个用 PyArrow 创建的 Parquet 文件。然而,其中一些文件的字段/列的名称(我们称其为 Orange)与原始列(称其为 Sporange)略有不同,因为其中一个使用了查询的变体。否则,数据(所有其他字段和所有数据)是相同的。在数据库世界中,我会执行 ALTER TABLE 并重命名该列。但是,我不知道如何用 parquet/PyArrow 做到这一点

有没有办法重命名文件中的列,而不必重新生成或复制文件?

或者,我可以读取它(我假设是 read_table 或 ParquetFile),更改对象中的列(不确定该怎么做)并将其写出吗?

我看到“rename_columns”,但不确定它是如何工作的;我尝试单独使用它,它说“rename_columns is not defined”。

rename_columns(self, names) Create new table with columns renamed to provided names.

非常感谢!

最佳答案

我怀疑您使用的 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')

关于parquet - 如何使用 Pyarrow 更改 Parquet 文件中列的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63349266/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com