You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:15:23