diff --git a/pandas/core/format.py b/pandas/core/format.py index e8645e578c976..8565e6650d5be 100644 --- a/pandas/core/format.py +++ b/pandas/core/format.py @@ -937,9 +937,12 @@ def _write_body(self, indent): else: self._write_regular_rows(fmt_values, indent) else: - for i in range(len(self.frame)): - row = [fmt_values[j][i] for j in range(len(self.columns))] - self.write_tr(row, indent, self.indent_delta, tags=None) + if isinstance(self.frame.index, MultiIndex): + for i in range(len(self.frame)): + row = [fmt_values[j][i] for j in range(len(self.columns))] + self.write_tr(row, indent, self.indent_delta, tags=None) + else: + self._write_regular_rows(fmt_values, indent, include_index=False) indent -= self.indent_delta self.write('', indent) @@ -947,7 +950,7 @@ def _write_body(self, indent): return indent - def _write_regular_rows(self, fmt_values, indent): + def _write_regular_rows(self, fmt_values, indent, include_index=True): truncate_h = self.fmt.truncate_h truncate_v = self.fmt.truncate_v @@ -959,22 +962,29 @@ def _write_regular_rows(self, fmt_values, indent): else: index_values = self.fmt.tr_frame.index.format() + if include_index: + nindex_levels = 1 + else: + nindex_levels = 0 + for i in range(nrows): if truncate_v and i == (self.fmt.tr_row_num): str_sep_row = [ '...' for ele in row ] self.write_tr(str_sep_row, indent, self.indent_delta, tags=None, - nindex_levels=1) + nindex_levels=nindex_levels) row = [] - row.append(index_values[i]) + if include_index: + row.append(index_values[i]) row.extend(fmt_values[j][i] for j in range(ncols)) if truncate_h: dot_col_ix = self.fmt.tr_col_num + 1 row.insert(dot_col_ix, '...') + self.write_tr(row, indent, self.indent_delta, tags=None, - nindex_levels=1) + nindex_levels=nindex_levels) def _write_hierarchical_rows(self, fmt_values, indent): template = 'rowspan="%d" valign="top"' diff --git a/pandas/tests/test_format.py b/pandas/tests/test_format.py index 1fe3055451f7e..0666490cfd3d4 100644 --- a/pandas/tests/test_format.py +++ b/pandas/tests/test_format.py @@ -881,6 +881,36 @@ def test_to_html_truncate(self): expected = expected.decode('utf-8') self.assertEqual(result, expected) + def test_to_html_truncate_no_index(self): + df = pd.DataFrame({'a': np.arange(0, 10), 'b': np.arange(9, -1, -1)}) + result = df.to_html(index=False, max_rows=3) + expected = '''\ +
a | +b | +
---|---|
0 | +9 | +
... | +... | +
9 | +0 | +