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

如何提取PDF多页表格并合并为单个DataFrame?

合并PDF多页表格为单个DataFrame

你的代码已经完成了最核心的表格提取工作,只差最后一步把分散的DataFrame合并起来!我来帮你调整代码:

基础合并方法(假设每页表格结构完全一致)

你已经初始化了tables列表,但没有把每页生成的DataFrame添加进去。只需要在循环里把每个df追加到列表,最后用pd.concat()合并即可:

import pdfplumber
import pandas as pd

pdf_file = "df.pdf"
tables = []

with pdfplumber.open(pdf_file) as pdf:
    for pg in pdf.pages:  # 简化写法,直接遍历所有页面
        tbl = pg.extract_table()
        if tbl:  # 先判断当前页是否有表格,避免空值报错
            df = pd.DataFrame(tbl)
            tables.append(df)
            # print(f'已提取当前页表格:\n{df}')

# 合并所有DataFrame,ignore_index=True重置行索引避免重复
combined_df = pd.concat(tables, ignore_index=True)
print("合并后的完整表格:")
print(combined_df)

进阶处理:每页都有重复表头的情况

如果你的PDF每一页都带相同的表头,直接合并会导致表头重复出现在数据里。这时候可以区分第一页和后续页面,只保留第一页的表头:

import pdfplumber
import pandas as pd

pdf_file = "df.pdf"
tables = []

with pdfplumber.open(pdf_file) as pdf:
    for idx, pg in enumerate(pdf.pages):
        tbl = pg.extract_table()
        if not tbl:
            continue
        if idx == 0:
            # 第一页:用第一行作为列名,数据从第二行开始
            df = pd.DataFrame(tbl[1:], columns=tbl[0])
        else:
            # 后续页:跳过第一行表头,复用第一页的列名
            df = pd.DataFrame(tbl[1:], columns=tables[0].columns)
        tables.append(df)

combined_df = pd.concat(tables, ignore_index=True)
print(combined_df)

这样处理后,合并后的DataFrame就会有正确的表头,且没有重复的表头行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:47:49