2013-01-17 8 views
30

Gibt es eine einfache Möglichkeit, einen Datenrahmen (oder sogar einen Teil davon) nach LaTeX zu exportieren?Exportieren einer LaTeX-Tabelle aus Pandas DataFrame

Ich suchte in Google und war nur in der Lage, Lösungen mit Asciitables zu finden.

+0

Zusätzlich zu den Antworten hier hat diese Frage auch einen interessanten Ansatz. Exportieren nach CSV und importieren Sie dann die CSV in Latex: http://tex.stackexchange.com/questions/54990/convert-numpy-array-into-tabolar –

Antwort

54

Datenrahmen haben eine to_latex Methode:

In [42]: df = pd.DataFrame(np.random.random((5, 5))) 

In [43]: df 
Out[43]: 
      0   1   2   3   4 
0 0.886864 0.518538 0.359964 0.167291 0.940414 
1 0.834130 0.022920 0.265131 0.059002 0.530584 
2 0.648019 0.953043 0.263551 0.595798 0.153969 
3 0.207003 0.015721 0.931170 0.045044 0.432870 
4 0.039886 0.898780 0.728195 0.112069 0.468485 

In [44]: print df.to_latex() 
\begin{tabular}{|l|c|c|c|c|c|c|} 
\hline 
{} &   0 &   1 &   2 &   3 &   4 \\ 
\hline 
0 & 0.886864 & 0.518538 & 0.359964 & 0.167291 & 0.940414 \\ 
1 & 0.834130 & 0.022920 & 0.265131 & 0.059002 & 0.530584 \\ 
2 & 0.648019 & 0.953043 & 0.263551 & 0.595798 & 0.153969 \\ 
3 & 0.207003 & 0.015721 & 0.931170 & 0.045044 & 0.432870 \\ 
4 & 0.039886 & 0.898780 & 0.728195 & 0.112069 & 0.468485 \\ 
\hline 
\end{tabular} 

Sie können einfach diese Datei in einen tex schreiben.

standardmäßig Latex machen wird dies als:

as it would appear in latex

Hinweis: Die to_latex Methode bietet mehrere Konfigurationsoptionen.

+0

@hayden danke für Ihre Bearbeitung – bmu

+0

thx, das hat funktioniert! Ich musste nur meine Pandas aktualisieren – PlagTag

+0

unterstützt 'to_latex()' Multi-Indizierung? – TheChymera

4

Schreiben Sie einfach in eine Textdatei. Es ist keine Magie:

import pandas as pd 
df = pd.DataFrame({"a":range(10), "b":range(10,20)}) 
with open("my_table.tex", "w") as f: 
    f.write("\\begin{tabular}{" + " | ".join(["c"] * len(df.columns)) + "}\n") 
    for i, row in df.iterrows(): 
     f.write(" & ".join([str(x) for x in row.values]) + " \\\\\n") 
    f.write("\\end{tabular}") 
+3

Obwohl es nützlich ist zu zeigen, wie einfach es ist, Tabellendaten zu exportieren LaTeX mit Plain Python, ist es natürlich viel besser, vorhandene Einrichtungen zu verwenden, dh, 'DataFrame.to_latex()' in diesem Fall. –

+2

Hallo, stimme ich voll und ganz zu. Meine Gründe waren: 1. Ich begann mit Pandas vor Version 0.9, wo to_latex nicht verfügbar war 2. Dies kann nützlich sein, wenn eine Anpassung erforderlich ist oder jemand in ein anderes Format exportieren möchte, zB XAML, benutzerdefinierte XML oder was auch immer . Aber danke für Ihren Kommentar –