如何用Python Pandas将DataFrame生成PDF文件?求替代方法
将Pandas DataFrame导出为PDF的可行方案
Pandas确实没有内置的DataFrame转PDF方法,下面给你几个实用的替代方案:
方案一:用Matplotlib绘制表格后导出PDF
Matplotlib可以把DataFrame渲染成可视化表格,再保存为PDF文件,步骤简单,适合快速生成:
import pandas as pd import matplotlib.pyplot as plt # 读取数据 df = pd.read_csv('/Users/ashy/Downloads/weather_data.csv') # 创建画布和轴对象 fig, ax = plt.subplots(figsize=(10, 6)) # 隐藏轴的边框和刻度 ax.axis('off') # 生成表格 table = ax.table(cellText=df.values, colLabels=df.columns, loc='center') # 调整表格样式(可选) table.auto_set_font_size(False) table.set_fontsize(10) table.scale(1.2, 1.2) # 保存为PDF plt.savefig('/Users/ashy/Downloads/weather_data.pdf', bbox_inches='tight', dpi=300) plt.close()
方案二:通过HTML中转,用pdfkit导出PDF
先把DataFrame转成HTML格式,再用pdfkit把HTML转成PDF,这种方法能保留DataFrame的原有样式,需要先安装依赖:
pip install pdfkit # 额外安装wkhtmltopdf:Mac用brew install wkhtmltopdf,Windows直接官网下载安装包手动安装
代码示例:
import pandas as pd import pdfkit df = pd.read_csv('/Users/ashy/Downloads/weather_data.csv') # 把DataFrame转为HTML(去掉索引列) html_table = df.to_html(index=False) # 导出为PDF pdfkit.from_string(html_table, '/Users/ashy/Downloads/weather_data.pdf')
方案三:用ReportLab直接构建PDF表格
ReportLab是专业的PDF生成库,适合需要高度自定义表格样式(比如颜色、字体、边框)的场景:
from reportlab.lib.pagesizes import letter from reportlab.platypus import SimpleDocTemplate, Table, TableStyle from reportlab.lib import colors import pandas as pd df = pd.read_csv('/Users/ashy/Downloads/weather_data.csv') # 把DataFrame转为包含表头的列表格式 data = [df.columns.tolist()] + df.values.tolist() # 创建PDF文档对象 doc = SimpleDocTemplate('/Users/ashy/Downloads/weather_data.pdf', pagesize=letter) # 创建表格对象 table = Table(data) # 设置自定义表格样式(可选) style = TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.grey), ('TEXTCOLOR', (0,0), (-1,0), colors.whitesmoke), ('ALIGN', (0,0), (-1,-1), 'CENTER'), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('BOTTOMPADDING', (0,0), (-1,0), 12), ('BACKGROUND', (0,1), (-1,-1), colors.beige), ('GRID', (0,0), (-1,-1), 1, colors.black) ]) table.setStyle(style) # 构建并保存PDF doc.build([table])
内容的提问来源于stack exchange,提问作者Ashy Ashcsi
相关产品推荐
相关产品推荐

