我正在使用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处打破表中的行
如果删除
column_format='p{3.5cm}|p{5cm}'
参数,将导致乳胶表的单元格条目太长,我认为这是您的问题。