如何用Pandas按标识读取Excel分段数据到多个DataFrame?
自动拆分Excel分段数据为多个DataFrame
核心思路
先读取整个工作表的原始数据,定位各分段标识的位置,再根据位置截取对应数据段并整理成目标DataFrame,彻底摆脱手动计算skiprows的繁琐。
代码实现
import pandas as pd # 读取整个工作表,不预设表头,保留所有原始行 df_raw = pd.read_excel('your_file.xlsx', header=None) # 定义分段标识 markers = ['DataEx1', 'DataEx2', 'DataEx3'] marker_positions = [] # 遍历原始数据,定位每个标识所在的行索引 for idx, row in df_raw.iterrows(): if any(str(cell).strip() == marker for marker in markers for cell in row): marker_positions.append(idx) # 处理每个分段,生成对应DataFrame dfs = {} for i, marker in enumerate(markers): start_row = marker_positions[i] + 1 # 标识行的下一行是表头 # 确定当前分段的结束行:下一个标识的前一行,最后一个分段到文件末尾 end_row = marker_positions[i+1] - 1 if i < len(markers)-1 else df_raw.index[-1] # 截取分段数据并整理格式 segment = df_raw.loc[start_row:end_row].copy() segment.columns = segment.iloc[0] # 用第一行作为表头 segment = segment[1:].reset_index(drop=True) # 移除表头行,重置索引 segment = segment.replace('', pd.NA) # 统一处理空单元格 dfs[f'df{i+1}'] = segment # 提取目标DataFrame df1 = dfs['df1'] df2 = dfs['df2'] df3 = dfs['df3'] # 验证输出 print("df1:\n", df1) print("\ndf2:\n", df2) print("\ndf3:\n", df3)
关键细节
- 用
header=None读取是为了保留所有行,避免提前把标识行误识别为表头; - 自动定位标识行的逻辑,适配Excel中标识行可能存在的空列情况;
- 分段截取时自动判断结束位置,无需手动指定每个分段的行数;
- 最后统一处理空值,保证DataFrame格式的一致性。
内容的提问来源于stack exchange,提问作者Stan
相关产品推荐
相关产品推荐

