我有一个 PandasDataFrame
对象。
我想用 将其打印为 PDF 文件pylatex
。我应该怎么做?
答案1
(注意:我以前从未听说过pylatex
,所以这个答案只是基于查看文档中的示例。)
取决于您需要什么以及您想如何打印它。最简单的情况是仅将DataFrame
矩阵中的值打印出来。或者您可以只建立一个表格。
下面的示例生成了此内容:
import numpy as np
import pylatex as pl
import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [9,8,7]})
df.index.name = 'x'
M = np.matrix(df.values)
doc = pl.Document()
with doc.create(pl.Section('Matrix')):
doc.append(pl.Math(data=[pl.Matrix(M)]))
with doc.create(pl.Section('Table')):
with doc.create(pl.Tabular('ccc')) as table:
table.add_hline()
table.add_row([df.index.name] + list(df.columns))
table.add_hline()
for row in df.index:
table.add_row([row] + list(df.loc[row,:]))
table.add_hline()
doc.generate_pdf('full', clean_tex=False)
答案2
值得注意的是,pandas DataFrames 已经有一个非常强大的to_latex
方法。另一种利用此方法且不重新发明轮子的方法是:
import numpy as np
import pylatex as pl
import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [9,8,7]})
df.index.name = 'x'
M = np.matrix(df.values)
doc = pl.Document()
doc.packages.append(pl.Package('booktabs'))
with doc.create(pl.Section('Matrix')):
doc.append(pl.Math(data=[pl.Matrix(M)]))
# Difference to the other answer:
with doc.create(pl.Section('Table')):
with doc.create(pl.Table(position='htbp')) as table:
table.add_caption('Test')
table.append(pl.Command('centering'))
table.append(pl.NoEscape(df.to_latex(escape=False)))
doc.generate_pdf('full', clean_tex=False)