¿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:
[...]