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

如何使用Pandas将PDF提取后的文本还原为表格列?

解决PDF提取后Pandas拆分列的问题

问题背景

我是Pandas新手,使用pdfplumber读取PDF中的数据表格并转换为Excel文件。转换后的Excel内容完整,但所有列的内容被合并成带单引号的字符串——每个单词对应原PDF的一列,逗号对应原PDF的空列。需要将这些内容重新拆分回独立列,还原原PDF的表格结构。

当前代码

import pdfplumber
import pandas as pd
from pandas import ExcelWriter

with pdfplumber.open('Sistema BanPara.pdf') as pdf:
    df = pd.DataFrame(page.extract_table() for page in pdf.pages).astype(str)
with pd.ExcelWriter('table.xlsx') as writer:
    df.to_excel(writer)

解决方案

方法1:处理已生成的中间Excel

  1. 读取中间Excel文件
df = pd.read_excel('table.xlsx')
  1. 拆分字符串为多列
    按逗号拆分合并的字符串,expand=True会自动将拆分结果转为多列:
split_df = df['0'].str.split(',', expand=True)  # 替换'0'为实际列名
  1. 清理单引号和空格
    去除每个单元格首尾的单引号和多余空格:
split_df = split_df.apply(lambda col: col.str.strip("' "))
  1. 保存最终结果
split_df.to_excel('final_table.xlsx', index=False)

方法2:直接从PDF生成最终Excel(跳过中间文件)

整合流程,无需先保存中间Excel,直接处理后输出:

import pdfplumber
import pandas as pd

# 读取PDF所有页面的表格
with pdfplumber.open('Sistema BanPara.pdf') as pdf:
    all_rows = []
    for page in pdf.pages:
        table = page.extract_table()
        if table:  # 跳过无表格的页面
            all_rows.extend(table)

# 转换为DataFrame
df = pd.DataFrame(all_rows)

# 拆分并清理列
if not df.empty:
    # 拆分合并的字符串列
    split_df = df[0].str.split(',', expand=True)
    # 去除单引号和空格
    split_df = split_df.apply(lambda col: col.str.strip("' "))
    # 保存最终表格
    split_df.to_excel('final_table.xlsx', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:10:01