72

Is there an easy way to export a data frame (or even a part of it) to LaTeX?

I searched in google and was only able to find solutions using asciitables.

1

4 Answers 4

113

DataFrames have a to_latex (see the pandas docs) method:

>>> df = pd.DataFrame(np.random.random((5, 5))) >>> df 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 >>> 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} 

You can simply write this to a tex file.

By default latex will render this as:

as it would appear in latex

Note: the to_latex (see the pandas docs) method offers several configuration options.

Sign up to request clarification or add additional context in comments.

5 Comments

does to_latex() support multi-indexing?
@TheChymera: Yes. I just tried multi columns, which seems to work. Multi indices look a little bit strange to me.
The option float_format=lambda x: '%10.2f' % x proved to be very useful in my case. Also, in LaTeX, I had to add \usepackage{booktabs}, as the output uses \toprule which requires it.
Great ! Does the reverse exists? I have a latex array and I would like to create a dataframe
Is there a way to end up with the pdf generated from the latex code?
11

If you want to save it:

with open('mytable.tex', 'w') as tf: tf.write(df.to_latex()) 

1 Comment

Actually, you just need df.to_latex('mytable.tex')
10

Just write to a textfile. It's no magic:

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}") 

2 Comments

Although it is useful to show how easy it is to export tabular data to LaTeX using plain Python, it is of course much better to use existing facilities, i.e., DataFrame.to_latex() in this case.
Hi, I totally agree. My reasons were: 1. I started with pandas before version 0.9, where to_latex wasn't available 2. This might be useful when some adjustement is needed or someone wants to export to another format, e.g., XAML, custom XML or whatever. But thank you for your comment
4

small update: it is now recommended to use df.style.to_latex('mytable.tex') instead of df.to_latex('mytable.tex')

2 Comments

It could be useful to add that with style.to_latex le LaTeX commands are preserved, without using escape = False.
Adding the reference link for people easily reach official pandas docs: pandas.pydata.org/docs/reference/api/…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.