@@ -842,6 +842,39 @@ def test_to_latex_specified_header_special_chars_without_escape(self):
842
842
)
843
843
assert result == expected
844
844
845
+ def test_to_latex_escape_multi_levels (self ):
846
+ df = DataFrame (
847
+ {
848
+ "_lev1" : ["_1" , "_1" , "_1" , "_2" , "_2" , "_2" ],
849
+ "_lev11" : ["_1" , "_1" , "_1" , "_2" , "_2" , "_2" ],
850
+ "_lev2" : ["_1" , "_1" , "_2" , "_1" , "_1" , "_2" ],
851
+ "_lev3" : ["_1" , "_2" , "_1" , "_2" , "_1" , "_2" ],
852
+ "_lev4" : ["_1" , "_2" , "_3" , "_4" , "_5" , "_6" ],
853
+ "values" : [0 , 1 , 2 , 3 , 4 , 5 ],
854
+ }
855
+ )
856
+ df = df .pivot (
857
+ index = ["_lev1" , "_lev11" ], columns = ["_lev2" , "_lev3" ], values = "values"
858
+ )
859
+ result = df .to_latex (escape = True )
860
+ expected = _dedent (
861
+ r"""
862
+ \begin{tabular}{llrrrr}
863
+ \toprule
864
+ & \_lev2 & \multicolumn{2}{r}{\_1} & \multicolumn{2}{r}{\_2} \\
865
+ & \_lev3 & \_1 & \_2 & \_1 & \_2 \\
866
+ \_lev1 & \_lev11 & & & & \\
867
+ \midrule
868
+ \_1 & \_1 & 0.000000 & 1.000000 & 2.000000 & NaN \\
869
+ \cline{1-6}
870
+ \_2 & \_2 & 4.000000 & 3.000000 & NaN & 5.000000 \\
871
+ \cline{1-6}
872
+ \bottomrule
873
+ \end{tabular}
874
+ """
875
+ )
876
+ assert result == expected
877
+
845
878
846
879
class TestToLatexPosition :
847
880
def test_to_latex_position (self ):
0 commit comments