从pandas dataframe to_latex()解决Latex表问题

时间:2014-01-28 10:43:34

标签: python pandas latex ipython-notebook ubuntu-13.04

我无法在我的IPython笔记本中可视化使用来自pandas的dataframe.to_latex()生成的Latex表。它在框中显示带有"\begin.."行的确切字符串。

我也很好奇为什么要格式化表格{lrrrrr}以及如何使用分隔{l|c|c|c|c}等值的行来更改列。

我不太确定我的设置是否存在问题,我想知道是否还有使用pandas.dataframe.to_latex()格式化Latex渲染表的文档。我使用IPython notebook(0.132)和Pandas(0.13)。我正在运行Ubuntu 13.04,Texlive2012。

IPython Notebook代码:

df = pd.DataFrame(np.random.random((5, 5)))
print df.to_latex()

IPython笔记本输出即使在复制并作为markdown运行后,也只添加了文本周围的框。

\begin{tabular}{lrrrrr}
\toprule
{} &         0 &         1 &         2 &         3 &         4 \\
\midrule
0 &  0.021896 &  0.716925 &  0.599158 &  0.260573 &  0.665406 \\
1 &  0.467573 &  0.235992 &  0.557386 &  0.640438 &  0.528914 \\
2 &  0.872155 &  0.053389 &  0.419169 &  0.613036 &  0.606046 \\
3 &  0.130878 &  0.732334 &  0.168879 &  0.039845 &  0.289991 \\
4 &  0.247346 &  0.370549 &  0.906652 &  0.228841 &  0.766951 \\
\bottomrule
\end{tabular}

我很感激任何帮助,因为我对熊猫和SciPy套件所做的精彩事情仍然很新!

2 个答案:

答案 0 :(得分:2)

1)Live Notebook不支持完整的LaTeX,它支持Math。表不是数学。因此表不会呈现。

2)您正在打印乳胶表示,因此您不会触发显示挂钩。因此只会显示文字。

3)不要“选择”你喜欢的对象的表示,只需from IPython.display import displaydisplay(object)让IPython处理你的其余部分,你将在notebok中得到一个漂亮的html表。 to_latexto_xls 对于那些知道他们正在使用原始数据做什么的人来说,等等。

一般情况下,尽量避免在同一篇文章中提出许多问题。和IPython 0.13.2 真的很旧,你应该考虑更新。

答案 1 :(得分:0)

你可以使用sympy

import pandas as pd
import numpy as np
from sympy import *
init_printing()
df = pd.DataFrame(np.random.random((5, 5)))
Matrix(df.as_matrix())