Pandas:从 parquet 文件中读取前 n 行?

Pandas : Reading first n rows from parquet file?

我有一个 parquet 文件,我想先从文件中读取 n 行到 pandas 数据框中。 我尝试了什么:

df = pd.read_parquet(path= 'filepath', nrows = 10)

它没有工作并给我错误:

TypeError: read_table() got an unexpected keyword argument 'nrows'

我也尝试了 skiprows 参数,但也给了我同样的错误。

或者,我可以读取完整的 parquet 文件并过滤前 n 行,但这需要更多的计算,我想避免。

有什么办法可以实现吗?

四处探索并与 pandas 开发团队取得联系后,终点是 pandas 在读取镶木地板时不支持参数 nrowsskiprows文件。

原因是pandas使用pyarrowfastparquetparquet引擎处理parquet文件,pyarrow不支持部分读取文件或跳过读取文件行(不确定 fastparquet)。下面是 pandas github issue 的 link 供讨论。

https://github.com/pandas-dev/pandas/issues/24511

Parquet 文件是面向列的存储,专为此而设计...因此加载所有文件以访问一行是正常的。

已接受的答案已过时。现在可以只将 parquet 文件的前几行读入 pandas,尽管它有点混乱并且依赖于后端。

要使用 PyArrow 作为后端阅读,请按照以下步骤操作:

from pyarrow.parquet import ParquetFile
import pyarrow as pa 

pf = ParquetFile('file_name.pq') 
first_ten_rows = next(pf.iter_batches(batch_size = 10)) 
df = pa.Table.from_batches([first_ten_rows]).to_pandas() 

更改行 batch_size = 10 以匹配您要读入的行数。