【问题标题】:Iterating through a dataframe to create PDF documents遍历数据框以创建 PDF 文档
【发布时间】:2017-06-16 13:35:44
【问题描述】:

我有一个作为 Pandas 数据框导入的工作表,看起来像这样:

FileName FilePath Date Pagestart PageEnd

file1 path1 date1 5 10

文件2路径2日期2 20 100

我的目标是遍历数据框并根据指定的页面范围为每一行创建一个 PDF。第一行应该通过从 file1 中提取第 5-10 页来创建一个新 PDF,第二行应该通过从 file2 中提取第 20-100 页来构建一个新 PDF。

我很难找到一种好方法,首先遍历数据框,然后根据页面范围创建 PDF。有没有办法很容易地遍历数据框?是否有一个模块可以创建 PDF,我可以在其中指定页面范围(我过去曾使用 PyPDF2 和 .getPage() 但我不认为它允许页面范围而是单个值)?

编辑:我想我找到了一种遍历数据框的好方法,但仍在寻找构建 PDF 的方法。这是我的迭代:

i = 0
for row in df.iterrows():
    iteration = df.iloc[i]
    i +=1

【问题讨论】:

  • 对于迭代,您可以使用DataFrame.itertuples()
  • 你可以用enumerate(iterable)代替i=0I += 1
  • 枚举更快/更好吗?另外,您对 PDF 创建方面有什么建议吗?

标签: python python-3.x pandas pdf dataframe


【解决方案1】:
import PyPDF2
import os

for row in df.itertuples():
    page_start, page_end = row.PageStart, row.PageEnd
    output_filename = generate_output_name
    filename = os.path.join(row.FilePath, row.FileName)
    with PdfFileMerger() as merger:
        merger.append(filename, pages=(page_start, page_en))
        merger.write(output_filename)

【讨论】:

  • 要为每一行创建一个新文件,如问题所示,您需要将with PdfFileMerger() as merger:merger.write(output_filename) 带入循环。
  • @EFT 我改了答案
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
相关资源
最近更新 更多