我正在使用pandas.DataFrame.to_latex()自动将文本填充的pd.DataFrame转换为LaTeX表。一切似乎都很好,但是如果文本很长,则不会损坏。使用



longtable = True


没有帮助。这是我的设定

df.to_latex(multicolumn = True, header = True, index_names = False,
            index = False, longtable = True)

最佳答案

在LaTeX表中,您可以使用{table spec}参数控制表的列格式,如下所示

\begin{tabular}[pos]{table spec}


pandas.DataFrame.to_latex()可以使用column_format参数将格式字符串传递给此参数。如果您希望固定两列,请使用例如

column_format='p{3.5cm}|p{5cm}'


这是一个简短的示例,说明了如何利用它来解决与您可比的问题:

import pandas as pd
import string

# Creating mock data
data_lower = string.ascii_lowercase
data_lower = ' '.join(data_lower[i:i+3] for i in range(0, len(data_lower), 3))
# >>> abc def ghi jkl mno pqr stu vwx yz
data_upper = string.ascii_uppercase
data_upper = ' '.join(data_upper[i:i+3] for i in range(0, len(data_upper), 3))
# >>> ABC DEF GHI JKL MNO PQR STU VWX YZ

df = pd.DataFrame({'this is a long entry in the table in minuscules':
                    data_lower,
                   'THIS IS A LONG ENTRY IN THE TABLE IN MAJUSCULES':
                    data_upper}, index=[0])

df.to_latex(multicolumn=True, header=True, index_names=False,
              index=False, column_format='p{3.5cm}|p{5cm}')


这给

\begin{tabular}{p{3.5cm}|p{5cm}}
    \toprule
    this is a long entry in the table in minuscules & THIS IS A LONG ENTRY IN THE TABLE IN MAJUSCULES \\
    \midrule
    abc def ghi jkl mno pqr stu vwx yz & ABC DEF GHI JKL MNO PQR STU VWX YZ \\
    \bottomrule
\end{tabular}


并分别在3.5cm和5cm处打破表中的行

python - 如何自动将文本包装在pandas.to_latex()生成的LaTeX表中?-LMLPHP

如果删除column_format='p{3.5cm}|p{5cm}'参数,将导致乳胶表的单元格条目太长,我认为这是您的问题。

09-08 11:53