You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GCS中多分区Parquet文件加载至Pandas DataFrame?

解决GCS分区Parquet文件合并为Pandas DataFrame的问题

错误原因

你手动拼接文件路径时出现了格式冲突,且ParquetDataset本身支持自动识别Hive风格的分区目录,不需要手动遍历文件。

修正后的最优代码

直接指定根目录,让ParquetDataset自动处理分区和文件加载:

import pandas as pd
import gcsfs
from pyarrow import parquet

# 指定存储根目录
root_path = "gs://path/to/storage/folder/"
fs = gcsfs.GCSFileSystem()

# 自动识别Hive分区,加载所有子目录下的Parquet文件
dataset = parquet.ParquetDataset(root_path, filesystem=fs, partitioning="hive")
multiple_dates_df = dataset.read().to_pandas()

print(multiple_dates_df.shape)

关键说明

  • 无需手动遍历文件:ParquetDataset支持解析event_date=YYYY-MM-DD这种Hive风格分区目录,指定partitioning="hive"后,会自动将event_date作为DataFrame的一列。
  • 避免路径重复:gcsfs的glob方法若传入带gs://的路径,返回结果已包含前缀,你之前的拼接会导致路径重复(如gs://gs://xxx),这也是触发错误的核心原因。

备选方案(手动遍历文件的正确写法)

如果必须手动遍历文件,需保证路径格式正确:

import pandas as pd
import gcsfs
from pyarrow import parquet

fs = gcsfs.GCSFileSystem()
root_path = "gs://path/to/storage/folder/"
# 使用相对路径匹配文件
files = [root_path + path for path in fs.glob("event_date=*/*.parquet")]

# 加载所有匹配到的文件
dataset = parquet.ParquetDataset(files, filesystem=fs)
multiple_dates_df = dataset.read().to_pandas()

print(multiple_dates_df.shape)

内容的提问来源于stack exchange,提问作者Regressor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:30:43