为 Excel 数据框所需的每一列迭代一个函数

Iterate a function for each column needed from Excel dataframe

我有下面的脚本,我想从列表中读取确定要打印的列,然后使用所述列下方的行中的数据合并 PDF 文件。

我的 model_types 列表包含 [model1]、[mode2] 等元素,数据框如下所示:

   model1      model2    model3     
0  File1.pdf   File3.pdf File2.pdf
1  File2.pdf   nan.pdf   File2.pdf
2  File3.pdf   nan.pdf   File2.pdf

我想让它从 model_types 读取所需的模型,然后仅针对这些列迭代函数,生成每个 pdf 文档,其中包含列中各行的文件。 model1 将有一个包含 file1、file2 和 file2 的 PDF 文件,其中 model2 将只有 file3。

我收到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'model1'

def merge_pdf(model_types: list[str]):
    merger = PdfFileMerger()
    for x in model_types:
        merger.append(x)
    merger.write("test{x}.pdf")
    merger.close()

merge_pdf(model_types)

问题是您循环的数据只有列值而不是行值,因此只有它显示 model1 文件未找到错误。

model_types 不是列表,它是数据框。如果它是列表意味着您需要使用 pandas

转换数据框
from PyPDF2 import PdfFileMerger
def merge_pdf(model_types):
    merger = PdfFileMerger()
    for col_name in model_types:
        for index, row in df.iterrows():
            merger.append(row[col_name])
    merger.write("test{x}.pdf")
    merger.close()

merge_pdf(model_types)