Export a LaTeX table from pandas DataFrame

前端 未结 3 1320
北荒
北荒 2020-12-12 15:10

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.

相关标签:
3条回答
  • 2020-12-12 15:27

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

    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}
    

    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.

    0 讨论(0)
  • 2020-12-12 15:30

    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}")
    
    0 讨论(0)
  • 2020-12-12 15:41

    If you want to save it:

    with open('mytable.tex', 'w') as tf:
         tf.write(df.to_latex())
    
    0 讨论(0)
提交回复
热议问题