0

我有一个镶木地板文件,它有一个带有几列的简单文件架构。我使用下面的代码将它读入 python

from fastparquet import ParquetFile
pf = ParquetFile('inout_files.parquet')

这运行良好,但是当我使用下面的代码将其转换为 pandas 时,出现以下错误:

df = pf.to_pandas()

错误是:

 NotImplementedError: Encoding 4

为了找到错误的来源,我分别df=pf.to_pandas(columns=col_to_retrieve)添加了列,并注意到错误是从具有字符串列表(例如(“a”、“b”、“c”))作为每个单元格的值的列之一引发的列。

你知道如何将它转换为 Pandas,知道有类型为 set(string) 的列吗?

4

1 回答 1

5

重新阅读问题后,我担心我的答案可能是非追随者......

我遇到了一个非常大的数据框/镶木地板的相关问题,并出现错误:“BinaryArray 不能包含超过 2147483646 字节”。

只要我没有类别类型, fastparquet似乎可以毫无错误地读取我的大表,而 pyarrow 可以毫无问题地写入它们。所以这是我目前的解决方法,直到这个问题得到解决:

0)采用没有类别列的数据框并制作表格:

import pyarrow as pa    
table = pa.Table.from_pandas(df)

1) 使用 pyarrow.parquet 编写我的表格:

 import pyarrow.parquet as pq
 pq.write_table(table, 'example.parquet')

2) 使用 fastparquet 读取我的表格:

from fastparquet import ParquetFile 
pf = ParquetFile('example.parquet')

3) 使用 fastparquet 转换为 pandas:

df = pf.to_pandas()

于 2018-01-29T18:40:47.460 回答