如何用PySpark Pandas批量读取含‘Data USD’的Excel工作表?
解决方案
核心思路
先遍历每个Excel文件,获取所有工作表名称并筛选出包含Data USD的目标表,再读取对应工作表的数据。
修改后的代码
import pyspark.pandas as ps # 获取目录下所有文件信息,过滤出Excel格式文件 my_files = ps.DataFrame(dbutils.fs.ls("abfss://my_container@my_env.dfs.core.windows.net/my_files/")) excel_files = my_files[my_files['name'].str.endswith(('.xlsx', '.xls'))]['path'].tolist() dataframes = [] def read_target_sheets(input_path): # 读取当前文件所有工作表,返回{表名: DataFrame}格式的字典 all_sheets_dict = ps.read_excel(input_path, sheet_name=None) # 筛选名称包含"Data USD"的工作表 target_sheets = [sheet for sheet in all_sheets_dict if 'Data USD' in sheet] for sheet in target_sheets: # 读取目标工作表并跳过前5行 df = ps.read_excel(input_path, sheet_name=sheet, skiprows=5) # 可选:添加来源标识字段,方便后续数据溯源 df['source_file'] = input_path.split('/')[-1] df['source_sheet'] = sheet dataframes.append(df) # 逐个处理所有Excel文件 for file_path in excel_files: read_target_sheets(file_path) # 合并所有DataFrame(按需选择) final_df = ps.concat(dataframes, ignore_index=True)
关键细节说明
- 用
sheet_name=None读取Excel时,会返回包含所有工作表的字典,通过字典键即可获取所有表名 - 提前过滤出
.xlsx/.xls格式文件,避免处理目录或其他非目标文件 - 添加来源字段可帮助后续排查数据问题,不需要可直接删除对应代码行
内容的提问来源于stack exchange,提问作者TheRealJimShady
相关产品推荐
相关产品推荐

