首页 > 解决方案 > 如何为 pyarrow Table 列设置“类别”数据类型?

问题描述

我知道在镶木地板文件中category编写熊猫时可以保留类型,使用.DataFrameto_parquet

一开始,就我而言,我已经有一个 pyarrow Table。我可以将其中一列设置为具有该category类型吗?如果是,如何?(我无法在 Google 和 pyarrow 文档上找到提示)

谢谢你的帮助!最好的,

标签: pythonparquetpyarrow

解决方案


在 pyarrow 中,分类类型称为“字典类型”。可以使用以下dictionary_encode()方法将 pyarrow 数组转换为这样的类型:

>>> import pyarrow as pa
>>> table = pa.table({'a': ['A', 'B', 'A']})
>>> table.schema
a: string

>>> table.column('a')
<pyarrow.lib.ChunkedArray object at 0x7f1f94fb9938>
[
  [
    "A",
    "B",
    "A"
  ]
]

>>> table.column('a').dictionary_encode()
<pyarrow.lib.ChunkedArray object at 0x7f1f94fb9b48>
[

  -- dictionary:
    [
      "A",
      "B"
    ]
  -- indices:
    [
      0,
      1,
      0
    ]
]

然后用这个新编码的列更改表有点复杂,但可以通过以下方式完成:

>>> table2 = table.set_column(0, "a", table.column('a').dictionary_encode())
>>> table2.schema
a: dictionary<values=string, indices=int32, ordered=0>


推荐阅读