¿Cómo crear una tabla df_toLatex () en varias páginas? PyLatex - Pandas - Python

Oct 13 2020

Me gustaría generar un informe para un proceso específico con un marco de datos largo en varias páginas. Pero cuando trato de generarlo, la tabla está solo en una sola página y no completa. Probé el paquete longtablepero no funciona.

Aquí mi código actual (ACTUALIZADO):

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) 

Respuestas

Marijn Oct 13 2020 at 16:24

No longtablese supone que el entorno se utilice dentro de un tableentorno. La leyenda debe proporcionarse como argumento para df.to_latex. El centrado es predeterminado.

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 generado:

\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.

Resultado:

[...]