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_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))If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow