Python实现从多个Parquet文件提取带文件名前缀的列名
解决方案:获取带文件名前缀的Parquet文件列名
以下是完善后的代码,可遍历指定目录下的所有Parquet压缩文件,提取每个文件的列名并添加文件名前缀,同时关联对应文件名存储结果:
import glob import pandas as pd import os # 目标文件路径 path = r'C:\Users\NewFOlder1\NewFOlder\Folder' # 获取所有.parquet.gzip文件(可根据实际文件后缀调整) all_files = glob.glob(os.path.join(path, '*.gzip')) # 用字典存储结果:键为文件名,值为带前缀的列名列表 file_columns = {} for file_path in all_files: # 提取纯文件名(去除完整路径) file_name = os.path.basename(file_path) # 读取Parquet文件 df = pd.read_parquet(file_path) # 生成带文件名前缀的列名,格式为「文件名_列名」 prefixed_columns = [f"{file_name}_{col}" for col in df.columns] # 将结果存入字典 file_columns[file_name] = prefixed_columns # 输出所有文件的带前缀列名 for filename, cols in file_columns.items(): print(f"文件 {filename} 的带前缀列名:") print(cols) print("-" * 50)
代码关键点说明
- 使用
os.path.basename提取纯文件名,避免把完整路径作为前缀的一部分,结果更整洁 - 字典
file_columns能清晰对应每个文件和它的带前缀列名,方便后续查看或进一步处理 - 列表推导式快速生成带前缀列名,代码简洁高效
- 如果需要检查所有文件的原始列名是否一致,可在循环中加入对比逻辑:
# 初始化基准列名 base_columns = None for file_path in all_files: df = pd.read_parquet(file_path) current_cols = df.columns.tolist() if base_columns is None: base_columns = current_cols else: if current_cols != base_columns: print(f"文件 {os.path.basename(file_path)} 的列名与基准不一致!")
内容的提问来源于stack exchange,提问作者manish maurya
相关产品推荐
相关产品推荐

