遍历列数不同的Parquet文件,如何通过列名映射索引获取指定列最大值
批量获取不同Parquet文件中指定列的最大值
核心思路是先通过文件元数据建立列名与索引的映射,再根据目标列名动态获取对应索引,进而读取统计值,具体实现步骤如下:
- 遍历所有目标Parquet文件路径
- 对每个文件,解析元数据中的列名列表,定位列'A'的索引
- 通过该索引获取对应列的统计信息,提取最大值
示例代码(基于pyarrow库)
import pyarrow.parquet as pq import os # 替换为你的目标文件路径列表或目录 file_paths = ["/path/to/file1.parquet", "/path/to/file2.parquet"] for file_path in file_paths: if not os.path.exists(file_path): print(f"文件 {file_path} 不存在,跳过") continue # 读取Parquet文件元数据 parquet_file = pq.ParquetFile(file_path) # 提取所有列名 column_names = [col.name for col in parquet_file.schema] try: # 动态获取列'A'的索引 col_a_index = column_names.index('A') # 获取该列的最大值 max_value = parquet_file.metadata.row_group(0).column(col_a_index).statistics.max print(f"文件 {file_path} 中列'A'的最大值: {max_value}") except ValueError: print(f"文件 {file_path} 中不存在列'A',跳过")
关键说明
- 借助
parquet_file.schema获取文件完整列结构,通过列表推导式提取所有列名 - 用
list.index('A')快速定位目标列索引,若文件不含该列会抛出ValueError,需捕获处理 - 保留原代码读取统计值的逻辑,仅将固定索引替换为动态获取的索引
内容的提问来源于stack exchange,提问作者Lagos
相关产品推荐
相关产品推荐

