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 在读取镶木地板时不支持参数 nrows
或 skiprows
文件。
原因是pandas使用pyarrow
或fastparquet
parquet引擎处理parquet文件,pyarrow
不支持部分读取文件或跳过读取文件行(不确定 fastparquet
)。下面是 pandas github issue 的 link 供讨论。
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
以匹配您要读入的行数。
我有一个 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 在读取镶木地板时不支持参数 nrows
或 skiprows
文件。
原因是pandas使用pyarrow
或fastparquet
parquet引擎处理parquet文件,pyarrow
不支持部分读取文件或跳过读取文件行(不确定 fastparquet
)。下面是 pandas github issue 的 link 供讨论。
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
以匹配您要读入的行数。