Pandas 和 FastParquet 读取单个分区

Posted

技术标签:

【中文标题】Pandas 和 FastParquet 读取单个分区【英文标题】:Pandas and FastParquet read a single partition 【发布时间】:2020-02-08 12:46:02 【问题描述】:

我有一个长时间运行的工作要读取在美国州具有自然逻辑分区的数据集。我使用 fastparquet(使用 pd.write_parquet)将它保存为 pandas 的分区 parquet 数据集。

我希望我的好友能够从创建的 parquet 文件夹中读取单个分区(状态)。 read_parquet 没有过滤能力。有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试使用daskparquet 阅读器。通过pandas 过滤对我有用。

How to read parquet file with a condition using pyarrow in Python

RUN pip install pyarrow
RUN pip install "dask[complete]"

import pyarrow.parquet as pq
import dask.dataframe as dd
import pandas as pd

path = ""
dask_df = dd.read_parquet(path, columns=["col1", "col2"], engine="pyarrow")

dask_filter_df = dask_df[dask_df.col1 == "filter here"]

path = ""
parquet_pandas_df = pq.ParquetDataset(path).read_pandas().to_pandas()

pandas_filter_df = parquet_pandas_df[parquet_pandas_df.col1 == "filter here"]

【讨论】:

以上是关于Pandas 和 FastParquet 读取单个分区的主要内容,如果未能解决你的问题,请参考以下文章

fastparquet:如何禁用 rle 编码

Python Pandas 使用 Fastparquet 将 CSV 转换为 Parquet

是否可以使用 Dask 和 Fastparquet 阅读器读取手动分区的 Parquet 数据集?

Pandas 可以在不修改文件其余部分的情况下读取和修改单个 Excel 文件工作表(选项卡)吗?

pandas read_excel,将单个标题读取到多列

Pandas读写文件操作