Come creare una tabella df_toLatex () su più pagine? PyLatex - Panda - Python
Oct 13 2020
Vorrei generare un report per un processo specifico con un lungo dataframe su più pagine. Ma quando provo a generarlo, la tabella è solo su una singola pagina e non intera. Provo il pacchetto longtablema non funziona.
Qui il mio codice attuale (AGGIORNATO):
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)
Risposte
Marijn Oct 13 2020 at 16:24
L' longtableambiente non dovrebbe essere utilizzato all'interno di un tableambiente. La didascalia dovrebbe essere fornita come argomento per df.to_latex. Il centraggio è l'impostazione predefinita.
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 generato:
\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.
Risultato:
[...]