Pandas DataFrames to_latex:如何在页面上放置表格?

时间:2013-07-17 08:16:26

标签: python python-2.7 latex pandas

我正在尝试使用pandas to_latex()函数来创建包含我的表格的PDF,但每次尝试我都会得到

  

在1--43行的段落中覆盖\ hbox(914.42409pt太宽)

或类似的错误。我知道这是因为我的桌子对于页面来说太大了,我的问题是,如何让我的桌子更小? to_latex函数的文档似乎不是很广泛,所以我搜索解决方案的效果并不是很好。

我创建表和.tex文件的代码如下:

r = r.to_latex(na_rep = '0', float_format = fp(2),  formatters=format_dict)
message = "\documentclass[12pt]{article}" \
      "\\"+"begin{document} " \
      "\section{20 Day Trading Stats}"
footer = "\end{document}"
message = message + r + footer
afile=open("outputfile.tex", "wb")
afile.write(message)

其中fp(2)format_dict只是参数的格式规范。

我正在使用MikTeX和LEd构建PDF,如果重要,我的电脑正在运行Windows 7。

2 个答案:

答案 0 :(得分:1)

一个解决方案可能是matrix2latex。此模块允许您将表格放在您喜欢的任何类型的环境中。通常,我会去:

from matrix2latex import matrix2latex
import numpy
data = numpy.array(r)
matrix2latex(data, 'outputfile.tex', 'table', 'tabular', 'small')

会导致:

\begin{table}[ht]
\begin{tabular}{cc...cc}
\toprule
\begin{small}
item1 & item2 &..... \\
...
\end{small}
\end{tabular}
\end{table}

显然,你可以改变小'对于你想要的任何事情,请记住你的论点顺序很重要。

希望这有帮助!

答案 1 :(得分:0)

解决您问题的另一种方法是在\ begin {table}内添加\ small。您可以使用以下代码进行操作:

df.to_latex(
        os.path.join("file.tex"),
        caption="My caption",
        label="tab:subject_info",
        escape=False,
        column_format="cccccccccccccccc",
        index=False,
    )

with open("file.tex"), "r+") as f:
    text = f.read().replace("\\begin{tabular}", "\small \\begin{tabular}")
    f.seek(0)
    f.write(text)
    f.close()