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

如何将报表格式的Excel数据导入pandas DataFrame

处理带复合表头的表格转Pandas DataFrame

根据你提供的表格结构(带合并单元格、多级表头的律所数据),可以按照以下步骤处理,完全用Python完成转换:

1. 读取原始数据

假设你下载的是Excel文件,读取时要指定表头为前两行(对应截图里的大类别+子字段的复合表头):

import pandas as pd

# 替换为你的文件路径
df_raw = pd.read_excel("nalp_data.xlsx", header=[0, 1])

2. 合并复合表头

把多级表头合并为单级,避免后续操作混淆:

# 用下划线连接大类别和子字段,生成清晰的列名
df_raw.columns = ['_'.join(col).strip() for col in df_raw.columns.values]

比如原表头Firm Information下的Name会变成FirmInformation_Name。

3. 填充跨行空值

因为合并单元格导致同一律所的标识字段(如名称)跨行出现空值,需要向下填充:

# 填充所有空值,确保同一律所的信息归属统一标识
df_filled = df_raw.ffill()

4. 用stack/unstack重塑数据

根据你的需求选择合适的重塑方式:

方式1:转成窄表(每条记录为一个字段的键值对)

如果需要把宽表拆成"律所-字段-值"的结构:

# 以律所名称为索引,stack展开所有字段
df_stacked = df_filled.set_index('FirmInformation_Name').stack().reset_index()
df_stacked.columns = ['Firm_Name', 'Field', 'Value']

方式2:保留宽表结构,清理重复行

如果要得到每条律所的完整单行记录:

# 删除重复的律所行,保留第一条完整记录
df_final = df_filled.drop_duplicates(subset='FirmInformation_Name', keep='first')

5. 可选:后续数据清洗

  • 删除完全为空的列/行:df_final = df_final.dropna(axis=1, how='all')
  • 格式化字符串字段(如地址、电话):可以用str.strip()、str.split()等方法拆分处理

内容的提问来源于stack exchange,提问作者As3adTintin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:34:52