@@ -632,6 +632,10 @@ def test_to_html_multiindex_index_false(self):
632
632
</table>"""
633
633
self .assertEqual (result , expected )
634
634
635
+ df .index = Index (df .index .values , name = 'idx' )
636
+ result = df .to_html (index = False )
637
+ self .assertEqual (result , expected )
638
+
635
639
def test_to_html_multiindex_sparsify_false_multi_sparse (self ):
636
640
with option_context ('display.multi_sparse' , False ):
637
641
index = MultiIndex .from_arrays ([[0 , 0 , 1 , 1 ], [0 , 1 , 0 , 1 ]],
@@ -1922,15 +1926,195 @@ def test_to_html_index(self):
1922
1926
'C' : ['one' , 'two' , np .NaN ]},
1923
1927
columns = ['A' , 'B' , 'C' ],
1924
1928
index = index )
1929
+ expected_with_index = ('<table border="1" class="dataframe">\n '
1930
+ ' <thead>\n '
1931
+ ' <tr style="text-align: right;">\n '
1932
+ ' <th></th>\n '
1933
+ ' <th>A</th>\n '
1934
+ ' <th>B</th>\n '
1935
+ ' <th>C</th>\n '
1936
+ ' </tr>\n '
1937
+ ' </thead>\n '
1938
+ ' <tbody>\n '
1939
+ ' <tr>\n '
1940
+ ' <th>foo</th>\n '
1941
+ ' <td>1</td>\n '
1942
+ ' <td>1.2</td>\n '
1943
+ ' <td>one</td>\n '
1944
+ ' </tr>\n '
1945
+ ' <tr>\n '
1946
+ ' <th>bar</th>\n '
1947
+ ' <td>2</td>\n '
1948
+ ' <td>3.4</td>\n '
1949
+ ' <td>two</td>\n '
1950
+ ' </tr>\n '
1951
+ ' <tr>\n '
1952
+ ' <th>baz</th>\n '
1953
+ ' <td>3</td>\n '
1954
+ ' <td>5.6</td>\n '
1955
+ ' <td>NaN</td>\n '
1956
+ ' </tr>\n '
1957
+ ' </tbody>\n '
1958
+ '</table>' )
1959
+ self .assertEqual (df .to_html (), expected_with_index )
1960
+
1961
+ expected_without_index = ('<table border="1" class="dataframe">\n '
1962
+ ' <thead>\n '
1963
+ ' <tr style="text-align: right;">\n '
1964
+ ' <th>A</th>\n '
1965
+ ' <th>B</th>\n '
1966
+ ' <th>C</th>\n '
1967
+ ' </tr>\n '
1968
+ ' </thead>\n '
1969
+ ' <tbody>\n '
1970
+ ' <tr>\n '
1971
+ ' <td>1</td>\n '
1972
+ ' <td>1.2</td>\n '
1973
+ ' <td>one</td>\n '
1974
+ ' </tr>\n '
1975
+ ' <tr>\n '
1976
+ ' <td>2</td>\n '
1977
+ ' <td>3.4</td>\n '
1978
+ ' <td>two</td>\n '
1979
+ ' </tr>\n '
1980
+ ' <tr>\n '
1981
+ ' <td>3</td>\n '
1982
+ ' <td>5.6</td>\n '
1983
+ ' <td>NaN</td>\n '
1984
+ ' </tr>\n '
1985
+ ' </tbody>\n '
1986
+ '</table>' )
1925
1987
result = df .to_html (index = False )
1926
1988
for i in index :
1927
1989
self .assertNotIn (i , result )
1990
+ self .assertEqual (result , expected_without_index )
1991
+ df .index = Index (['foo' , 'bar' , 'baz' ], name = 'idx' )
1992
+ expected_with_index = ('<table border="1" class="dataframe">\n '
1993
+ ' <thead>\n '
1994
+ ' <tr style="text-align: right;">\n '
1995
+ ' <th></th>\n '
1996
+ ' <th>A</th>\n '
1997
+ ' <th>B</th>\n '
1998
+ ' <th>C</th>\n '
1999
+ ' </tr>\n '
2000
+ ' <tr>\n '
2001
+ ' <th>idx</th>\n '
2002
+ ' <th></th>\n '
2003
+ ' <th></th>\n '
2004
+ ' <th></th>\n '
2005
+ ' </tr>\n '
2006
+ ' </thead>\n '
2007
+ ' <tbody>\n '
2008
+ ' <tr>\n '
2009
+ ' <th>foo</th>\n '
2010
+ ' <td>1</td>\n '
2011
+ ' <td>1.2</td>\n '
2012
+ ' <td>one</td>\n '
2013
+ ' </tr>\n '
2014
+ ' <tr>\n '
2015
+ ' <th>bar</th>\n '
2016
+ ' <td>2</td>\n '
2017
+ ' <td>3.4</td>\n '
2018
+ ' <td>two</td>\n '
2019
+ ' </tr>\n '
2020
+ ' <tr>\n '
2021
+ ' <th>baz</th>\n '
2022
+ ' <td>3</td>\n '
2023
+ ' <td>5.6</td>\n '
2024
+ ' <td>NaN</td>\n '
2025
+ ' </tr>\n '
2026
+ ' </tbody>\n '
2027
+ '</table>' )
2028
+ self .assertEqual (df .to_html (), expected_with_index )
2029
+ self .assertEqual (df .to_html (index = False ), expected_without_index )
1928
2030
1929
2031
tuples = [('foo' , 'car' ), ('foo' , 'bike' ), ('bar' , 'car' )]
1930
2032
df .index = MultiIndex .from_tuples (tuples )
2033
+
2034
+ expected_with_index = ('<table border="1" class="dataframe">\n '
2035
+ ' <thead>\n '
2036
+ ' <tr style="text-align: right;">\n '
2037
+ ' <th></th>\n '
2038
+ ' <th></th>\n '
2039
+ ' <th>A</th>\n '
2040
+ ' <th>B</th>\n '
2041
+ ' <th>C</th>\n '
2042
+ ' </tr>\n '
2043
+ ' </thead>\n '
2044
+ ' <tbody>\n '
2045
+ ' <tr>\n '
2046
+ ' <th rowspan="2" valign="top">foo</th>\n '
2047
+ ' <th>car</th>\n '
2048
+ ' <td>1</td>\n '
2049
+ ' <td>1.2</td>\n '
2050
+ ' <td>one</td>\n '
2051
+ ' </tr>\n '
2052
+ ' <tr>\n '
2053
+ ' <th>bike</th>\n '
2054
+ ' <td>2</td>\n '
2055
+ ' <td>3.4</td>\n '
2056
+ ' <td>two</td>\n '
2057
+ ' </tr>\n '
2058
+ ' <tr>\n '
2059
+ ' <th>bar</th>\n '
2060
+ ' <th>car</th>\n '
2061
+ ' <td>3</td>\n '
2062
+ ' <td>5.6</td>\n '
2063
+ ' <td>NaN</td>\n '
2064
+ ' </tr>\n '
2065
+ ' </tbody>\n '
2066
+ '</table>' )
2067
+ self .assertEqual (df .to_html (), expected_with_index )
2068
+
1931
2069
result = df .to_html (index = False )
1932
2070
for i in ['foo' , 'bar' , 'car' , 'bike' ]:
1933
2071
self .assertNotIn (i , result )
2072
+ # must be the same result as normal index
2073
+ self .assertEqual (result , expected_without_index )
2074
+
2075
+ df .index = MultiIndex .from_tuples (tuples , names = ['idx1' , 'idx2' ])
2076
+ expected_with_index = ('<table border="1" class="dataframe">\n '
2077
+ ' <thead>\n '
2078
+ ' <tr style="text-align: right;">\n '
2079
+ ' <th></th>\n '
2080
+ ' <th></th>\n '
2081
+ ' <th>A</th>\n '
2082
+ ' <th>B</th>\n '
2083
+ ' <th>C</th>\n '
2084
+ ' </tr>\n '
2085
+ ' <tr>\n '
2086
+ ' <th>idx1</th>\n '
2087
+ ' <th>idx2</th>\n '
2088
+ ' <th></th>\n '
2089
+ ' <th></th>\n '
2090
+ ' <th></th>\n '
2091
+ ' </tr>\n '
2092
+ ' </thead>\n '
2093
+ ' <tbody>\n '
2094
+ ' <tr>\n '
2095
+ ' <th rowspan="2" valign="top">foo</th>\n '
2096
+ ' <th>car</th>\n '
2097
+ ' <td>1</td>\n '
2098
+ ' <td>1.2</td>\n '
2099
+ ' <td>one</td>\n '
2100
+ ' </tr>\n '
2101
+ ' <tr>\n '
2102
+ ' <th>bike</th>\n '
2103
+ ' <td>2</td>\n '
2104
+ ' <td>3.4</td>\n '
2105
+ ' <td>two</td>\n '
2106
+ ' </tr>\n '
2107
+ ' <tr>\n '
2108
+ ' <th>bar</th>\n '
2109
+ ' <th>car</th>\n '
2110
+ ' <td>3</td>\n '
2111
+ ' <td>5.6</td>\n '
2112
+ ' <td>NaN</td>\n '
2113
+ ' </tr>\n '
2114
+ ' </tbody>\n '
2115
+ '</table>' )
2116
+ self .assertEqual (df .to_html (), expected_with_index )
2117
+ self .assertEqual (df .to_html (index = False ), expected_without_index )
1934
2118
1935
2119
def test_repr_html (self ):
1936
2120
self .frame ._repr_html_ ()
0 commit comments