Konvertierung eines Pandas DataFrame in eine angepasste LaTeX-Tabular

English Deutsch

Problem:

Du musst ein pandas-DataFrame in eine LaTeX-Tabelle konvertieren. Du möchtest die pandas-Spalten- und Zeilenbeschriftungen in die Tabelle einbeziehen.

Lösung

Schau dir die Pandas-Funktion to_latex an, die für die meisten Zwecke ausreichen sollte.

Das hier bereitgestellte Skript kann als Baustein verwendet werden, um deine Python-Datenstruktur in eine vollständig angepasste LaTeX-tabular oder eine vergleichbare LaTeX-Struktur zu konvertieren.

Standardmäßig generiert es eine Tabelle wie diese:

Pandas DataFrame konvertiert in LaTeX-Tabular

pandas_to_latex.py
#!/usr/bin/env python3
"""
Converts pandas DataFrames to LaTeX {tabular}.
Does not require any external LaTeX packages

Version 1.1: Python3 read
"""
import pandas
import io #Used as buffer

__author__  = "Uli Köhler"
__license__ = "Apache License v2.0"

def convertToLaTeX(df, alignment="c"):
    """
    Convert a pandas dataframe to a LaTeX tabular.
    Prints labels in bold, does not use math mode
    """
    numColumns = df.shape[1]
    numRows = df.shape[0]
    output = io.StringIO()
    colFormat = ("%s|%s" % (alignment, alignment * numColumns))
    #Write header
    output.write("\\begin{tabular}{%s}\n" % colFormat)
    columnLabels = ["\\textbf{%s}" % label for label in df.columns]
    output.write("& %s\\\\\\hline\n" % " & ".join(columnLabels))
    #Write data lines
    for i in range(numRows):
        output.write("\\textbf{%s} & %s\\\\\n"
                     % (df.index[i], " & ".join([str(val) for val in df.ix[i]])))
    #Write footer
    output.write("\\end{tabular}")
    return output.getvalue()

if __name__ == "__main__":
    import numpy
    #Example code
    array = numpy.zeros((5,6))
    df = pandas.DataFrame(array, index=list("abcde"), columns=list("ABCDEF"))
    print(convertToLaTeX(df))

Check out similar posts by category: Pandas, Python