from datetime import date
import jinja2
import pandas as pd
from xhtml2pdf import pisa
df = pd.DataFrame({
"Average Introducer Score": [9, 9.1, 9.2],
"Reviewer Scores": ["Academic: 6, 6, 6", "Something", "Content"],
"Average Academic Score": [5.7, 5.8, 5.9],
"Average User Score": [1.2, 1.3, 1.4],
"Applied for (RC)": [9.2, 9.3, 9.4],
"Applied for (FEC)": [5.5, 5.6, 5.7],
"Duration (Months)": [36, 37, 38]})
for row_ix, row in df.iterrows():
html = jinja2.Environment( # Pandas DataFrame to HTML
loader=jinja2.FileSystemLoader(searchpath='')).get_template(
'report_template.html').render(date=date.today().strftime('%d, %b %Y'),
row_ix=row_ix, df=row)
# Convert HTML to PDF
with open('report_row_%s.pdf' % (row_ix+1), "w+b") as out_pdf_file_handle:
pisa.CreatePDF(
src=html, # HTML to convert
dest=out_pdf_file_handle) # File handle to receive result
这当然是可能的,但我不认为熊猫提供了这样的功能。您可能想看一看“编程”和编译文档(这本身与python无关)的latex。您可以创建一个latex模板,并在python中动态填充内容,然后编译一个pdf文档,但可能需要一些努力才能找到进入latex的方法。
用Pandas读取CSV文件:是的,绝对有可能。见:http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table
与熊猫一起制作报告:取决于你到底在找什么。Pandas有许多不同的输出编写功能,但它们的重点是生成表,而不是生成整个文档。最接近“文档”样式的输出(可以直接从Pandas获得)的可能是HTML表输出: http://pandas.pydata.org/pandas-docs/stable/io.html#io-html
这超出了Pandas的范围,但是您可以在^{} (模板引擎)和^{} (将HTML转换为PDF)库的帮助下,轻松地从Pandas数据框的每一行创建PDF报告。
首先,在
report_template.html
中定义报表的结构和外观:然后,运行这个Python 3代码,它通过
jinja2
将每行数据帧转换为HTML字符串,然后通过xhtml2pdf
将HTML转换为PDF:对于Python代码中指定的数据帧,将输出3个pdf。第一个PDF如下所示(转换为PNG以便在此处显示):
相关问题 更多 >
编程相关推荐