读取分区数据时将文件夹值转为DataFrame列的方法
读取多文件夹Parquet并添加anomesdia列的解决方案
用Pandas处理(小数据量场景)
遍历所有目标文件夹,读取文件时从文件夹名里提取anomesdia的值,添加为新列后合并所有数据:
import pandas as pd import os from glob import glob # 替换成你的根目录(所有anomesdia=xxx文件夹的父目录) root_dir = "/your/root/path" # 获取所有anomesdia开头的文件夹路径 folder_list = glob(os.path.join(root_dir, "anomesdia=*")) df_list = [] for folder_path in folder_list: # 从文件夹名拆分出anomesdia的值 anomesdia = folder_path.split("=")[-1] # 读取当前文件夹下的所有Parquet文件 temp_df = pd.read_parquet(folder_path) # 添加新列 temp_df["anomesdia"] = anomesdia df_list.append(temp_df) # 合并所有数据框 final_df = pd.concat(df_list, ignore_index=True)
用PySpark处理(大数据量场景)
Spark原生支持识别key=value格式的分区文件夹,读取时会自动把分区键作为列加入DataFrame,无需手动提取:
from pyspark.sql import SparkSession # 初始化Spark会话 spark = SparkSession.builder.appName("ParquetPartitionRead").getOrCreate() # 直接读取根目录,Spark会自动识别anomesdia作为分区列 final_df = spark.read.parquet("/your/root/path") # 验证结果 final_df.show()
注意点
- Pandas适合小数据量,数据加载到内存处理;PySpark适合大数据量,分布式处理更高效。
- 确保文件夹命名严格是
anomesdia=YYYYMMDD格式,这样不管哪种方法都能准确提取值。
内容的提问来源于stack exchange,提问作者Hernandes Matias Junior
相关产品推荐
相关产品推荐

