如何在R中批量读取非A1起始的多份Excel文件并合并数据
批量处理Excel工作簿并合并为DataFrame
核心思路
先把单个文件的处理逻辑封装成函数,再遍历文件列表批量执行,最后合并所有结果。以下是基于pandas的高效实现方案:
代码实现
import pandas as pd def process_single_excel(file_path): # 读取B10:N13区域的4行数据 df_chunk = pd.read_excel( file_path, usecols='B:N', # 限定读取B到N列 skiprows=9, # 跳过前9行,从第10行(B10)开始读取 nrows=4 # 读取4行(覆盖B10到N13) ) # 提取B10:N10作为列名 column_names = df_chunk.iloc[0].tolist() # 提取B13:N13的% Positive数据 data_row = df_chunk.iloc[3].tolist() # 读取B2单元格的日期 date = pd.read_excel( file_path, usecols='B', skiprows=1, # 跳过第1行,读取第2行(B2) nrows=1, header=None ).iloc[0, 0] # 构造单文件结果DataFrame single_result = pd.DataFrame([data_row], columns=column_names) single_result['日期'] = date # 添加日期字段 return single_result # 假设你已获取的文件列表为file_list # file_list = ['file1.xlsx', 'file2.xlsx', ...] # 批量处理所有文件 all_results = [] for file in file_list: try: res = process_single_excel(file) all_results.append(res) except Exception as e: print(f"处理文件{file}出错: {str(e)}") # 合并所有结果为一个DataFrame final_df = pd.concat(all_results, ignore_index=True)
关键细节说明
usecols='B:N':精准限定读取列范围,避免加载无关数据提升处理效率skiprows和nrows:直接定位目标行区域,无需读取整个Excel文件- 异常捕获:避免单个文件处理失败导致整个批量任务中断
ignore_index=True:合并后重置索引,保证结果DataFrame索引连续
内容的提问来源于stack exchange,提问作者Renee
相关产品推荐
相关产品推荐

