在pandas中对to_latex的单独列进行对齐
我正在使用 pandas
的 to_latex
方法把一个数据表转换成 LaTeX 格式的 tabular
表格。不过,我没有找到可以改变生成的表格对齐方式的选项。比如,我有一个数据表看起来是这样的:
In [46]: df
Out[46]:
Number of days Tuples Distinct Tuples
162 29 700587 41300
163 20 497599 29302
164 15 365599 21382
165 10 256903 14916
166 5 127647 7441
167 2 54254 3117
168 1 26987 1288
而我输出的表格看起来是这样的:
In [50]: print df.to_latex(index=None)
\begin{tabular}{lll}
\toprule
Number of days & Tuples & Distinct Tuples \\
\midrule
29 & 700587 & 41300 \\
20 & 497599 & 29302 \\
15 & 365599 & 21382 \\
10 & 256903 & 14916 \\
5 & 127647 & 7441 \\
2 & 54254 & 3117 \\
1 & 26987 & 1288 \\
\bottomrule
\end{tabular}
我想把 {lll}
的对齐方式改成 {rrr}
。一般来说,我甚至可能想要不同列有不同的对齐方式,或者在 {r|r|r}
的设计中使用竖线分隔符 |。
现在支持这样做吗?
2 个回答
13
到现在为止(pandas
版本 0.17.1),to_latex
方法已经有了 column_format
这个参数,所以你可以很简单地这样做:
print df.to_latex(index=None, column_format='rrr')
5
在pandas的代码中(这个函数是用来生成latex表格的),你可以看到:https://github.com/pydata/pandas/blob/master/pandas/core/format.py#L492,目前还不支持。如果你的数据是numpy的数字,它会被正确格式化。在Python中,格式化你的列是非常简单的。
print df.to_latex(index=None).replace('lll','rrr')
或者你也可以用更通用的方法,使用正则表达式替换。