簡體   English   中英

Pandas:從鑲木地板文件中讀取前 n 行?

[英]Pandas : Reading first n rows from parquet file?

我有一個鑲木地板文件,我想將文件中的前n行讀入熊貓數據框。 我試過的:

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

它不起作用並給了我錯誤:

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

我也嘗試過skiprows參數,但這也給了我同樣的錯誤。

或者,我可以讀取完整的鑲木地板文件並過濾前 n 行,但這將需要我想避免的更多計算。

有什么方法可以實現嗎?

探索周圍,與大熊貓的開發團隊取得聯系后,終點是大熊貓不支持的說法nrowsskiprows在閱讀拼花文件。

原因是熊貓使用pyarrowfastparquet實木復合地板引擎來處理實木復合地板文件,而pyarrow不支持部分讀取文件或通過跳過行讀取文件(不確定fastparquet )。 以下是熊貓github上的問題鏈接,以供討論。

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以匹配您想要讀入的行數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM