Как создать таблицу df_toLatex () на нескольких страницах? PyLatex - Панды - Python

Oct 13 2020

Я хотел бы создать отчет для определенного процесса с длинным фреймом данных на нескольких страницах. Но когда я пытаюсь его сгенерировать, таблица находится только на одной странице, а не целиком. Я пробую пакет, longtableно он не работает.

Вот мой текущий код (ОБНОВЛЕНО):

import pandas as pd
import pylatex as pl

df = pd.DataFrame(dict(x=range(256),y=['same']*256))

doc = pl.Document()

doc.packages.append(pl.Package('booktabs'))
doc.packages.append(pl.Package('longtable'))

with doc.create(pl.Section('Table: Global Faults ')):
    with doc.create(pl.Table(position='htbp')) as table:
        table.add_caption('Five first')
        table.append(pl.Command('centering'))
        table.append(pl.NoEscape(df.to_latex(longtable=True)))


doc.generate_pdf(filepath=f'Global_Fault', clean_tex=False) 

Ответы

Marijn Oct 13 2020 at 16:24

longtableСреда не должна быть использована внутри tableсреды. Заголовок должен быть аргументом для df.to_latex. Центрирование по умолчанию.

MWE:

import pandas as pd
import pylatex as pl

df = pd.DataFrame(dict(x=range(256),y=['same']*256))

doc = pl.Document()

doc.packages.append(pl.Package('booktabs'))
doc.packages.append(pl.Package('longtable'))

with doc.create(pl.Section('Table: Global Faults ')):
    doc.append(pl.NoEscape(df.to_latex(longtable=True,caption='Five first')))

doc.generate_pdf(filepath=f'Global_Fault', clean_tex=False)

Сгенерированный LaTeX:

\begin{document}%
\normalsize%
\section{Table: Global Faults }%
\label{sec:TableGlobalFaults}%
\begin{longtable}{lrl}
\caption{Five first}\\
\toprule
{} &    x &     y \\
\midrule
\endhead
\midrule
\multicolumn{3}{r}{{Continued on next page}} \\
\midrule
\endfoot

\bottomrule
\endlastfoot
0   &    0 &  same \\
1   &    1 &  same \\
% etc.

Результат:

[...]