to_latex bug for midrule location · Issue #18326 · pandas-dev/pandas (original) (raw)
There are a lot of other posts (e.g. #14484 #16718 #17959 etc) with bugs in the to_latex() function so this might have a common source.
The midrule location is wrong when the index has a name but index_names=False. This bug shows up even in simple dataframes without multi-indexing like the other bugs open at the moment:
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randn(5,3))
df.index.name = 'foo'
print df.to_latex(index_names=False)
gives
\begin{tabular}{lrrr}
\toprule
{} & 0 & 1 & 2 \\
0 & 1.898767 & -0.841932 & -1.681799 \\
\midrule
1 & 0.057378 & 0.041809 & 0.612301 \\
2 & 0.799285 & 0.477284 & -0.331426 \\
3 & -0.412104 & -0.680420 & -1.092955 \\
4 & -1.485436 & -1.180868 & -0.063881 \\
\bottomrule
\end{tabular}
It should be
\begin{tabular}{lrrr}
\toprule
{} & 0 & 1 & 2 \\
\midrule
0 & 1.898767 & -0.841932 & -1.681799 \\
1 & 0.057378 & 0.041809 & 0.612301 \\
2 & 0.799285 & 0.477284 & -0.331426 \\
3 & -0.412104 & -0.680420 & -1.092955 \\
4 & -1.485436 & -1.180868 & -0.063881 \\
\bottomrule
\end{tabular}
Also, the width of {} is ignored for the space padding in the index column, which is a bit annoying.
This is from:
Python 2.7.13
numpy==1.13.1
pandas==0.20.3