Skip to content

BUG: output formatting with to_html(), index=False and/or index_names=False (#22579, #22747) #22655

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 109 commits into from
Jan 1, 2019
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
6adc266
BUG: header alignment
simonjayhawkins Sep 10, 2018
a30da56
add test_to_html_index_name_single_index
simonjayhawkins Sep 10, 2018
b444fa2
add placeholders for multiIndex tests
simonjayhawkins Sep 10, 2018
c61ea4a
add regression test
simonjayhawkins Sep 10, 2018
863b6d6
add regression test
simonjayhawkins Sep 10, 2018
b44d4ff
add regression test
simonjayhawkins Sep 10, 2018
d5c37e3
add regression test
simonjayhawkins Sep 10, 2018
6b441df
prep test_to_html_index_name_multi_index_both_index_false
simonjayhawkins Sep 10, 2018
dcf74a5
add regression test
simonjayhawkins Sep 10, 2018
dd07605
add regression test
simonjayhawkins Sep 10, 2018
4605a4e
add regression test
simonjayhawkins Sep 10, 2018
dd825f3
add regression test
simonjayhawkins Sep 10, 2018
b7fe95c
add regression test
simonjayhawkins Sep 10, 2018
dec609d
add regression test
simonjayhawkins Sep 10, 2018
5b9bc6e
add regression test
simonjayhawkins Sep 10, 2018
a725108
move regression test
simonjayhawkins Sep 10, 2018
d7e8237
remove duplicated regression tests
simonjayhawkins Sep 10, 2018
47fd132
add regression test
simonjayhawkins Sep 10, 2018
4e48a32
add regression test
simonjayhawkins Sep 10, 2018
30ac94e
add failing test
simonjayhawkins Sep 10, 2018
5f6a8d1
split and rename tests
simonjayhawkins Sep 10, 2018
1b4c5dc
fix failing test
simonjayhawkins Sep 10, 2018
82d57eb
add test (failing)
simonjayhawkins Sep 10, 2018
cfa7570
fix failing test
simonjayhawkins Sep 10, 2018
9f884fb
refactor
simonjayhawkins Sep 10, 2018
25e8103
add regression test (failing)
simonjayhawkins Sep 10, 2018
d7ec7a3
fix failing test
simonjayhawkins Sep 11, 2018
17f66ac
add test
simonjayhawkins Sep 11, 2018
92d0c9a
add test (failing)
simonjayhawkins Sep 11, 2018
e6da59b
revert html.py to upstream/master
simonjayhawkins Sep 11, 2018
96b181e
re-apply minimal code changes
simonjayhawkins Sep 11, 2018
e737cd6
minimise changes further
simonjayhawkins Sep 11, 2018
9dbb6ed
refactor
simonjayhawkins Sep 11, 2018
130873f
refactor
simonjayhawkins Sep 11, 2018
fc8851d
fix failing test
simonjayhawkins Sep 11, 2018
2ace532
refactor
simonjayhawkins Sep 11, 2018
49177d7
fix pep8
simonjayhawkins Sep 11, 2018
5cbb8c5
refactor
simonjayhawkins Sep 11, 2018
1db45f2
WIP parametrize tests
simonjayhawkins Sep 11, 2018
cf883d9
WIP parametrize tests
simonjayhawkins Sep 11, 2018
3842c52
fix typo
simonjayhawkins Sep 11, 2018
8722603
refactor test
simonjayhawkins Sep 11, 2018
d7c2e20
WIP parametrize tests
simonjayhawkins Sep 11, 2018
2aed4ec
WIP parametrize tests
simonjayhawkins Sep 11, 2018
f8191f0
WIP parametrize tests
simonjayhawkins Sep 12, 2018
c21f7cd
add test (failing)
simonjayhawkins Sep 12, 2018
3263cc1
fix failing test
simonjayhawkins Sep 13, 2018
528fcbc
add test
simonjayhawkins Sep 13, 2018
fae4070
refactor
simonjayhawkins Sep 13, 2018
c3ab8d2
refactor test
simonjayhawkins Sep 13, 2018
0d9330e
replace single with standard
simonjayhawkins Sep 13, 2018
ebf711b
refactor tests
simonjayhawkins Sep 13, 2018
b798429
refactor test
simonjayhawkins Sep 13, 2018
23e3204
refactor test
simonjayhawkins Sep 13, 2018
9fd31b3
add tests (failing)
simonjayhawkins Sep 13, 2018
22396e2
fix failing tests
simonjayhawkins Sep 13, 2018
aee9b7e
minimise changes
simonjayhawkins Sep 13, 2018
aae1632
WIP add test fixtures
simonjayhawkins Sep 13, 2018
3989085
WIP add test fixtures
simonjayhawkins Sep 14, 2018
21a70ed
WIP add test fixtures
simonjayhawkins Sep 14, 2018
85490a9
WIP add test fixtures
simonjayhawkins Sep 14, 2018
2452aff
WIP add test fixtures
simonjayhawkins Sep 14, 2018
9a0512c
WIP add test fixtures
simonjayhawkins Sep 14, 2018
f2b5f75
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Sep 15, 2018
f94e336
add test
simonjayhawkins Sep 15, 2018
db32821
refactor test
simonjayhawkins Sep 15, 2018
2546d82
move read_file fixture factory into conftest.py
simonjayhawkins Sep 15, 2018
29867d4
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Sep 15, 2018
483ace8
update expected output
simonjayhawkins Sep 17, 2018
96b5442
fix failing tests
simonjayhawkins Sep 17, 2018
00d452c
refactor
simonjayhawkins Sep 17, 2018
3d1d5c4
refactor
simonjayhawkins Sep 18, 2018
5dcd146
requested change
simonjayhawkins Sep 19, 2018
5327098
add comments
simonjayhawkins Sep 19, 2018
0961db7
refactor
simonjayhawkins Sep 20, 2018
9b8e203
(wip) resolve merge conflicts
simonjayhawkins Nov 16, 2018
677472a
(wip) remove conftest.py
simonjayhawkins Nov 16, 2018
5ec0c57
(wip) refactor test
simonjayhawkins Nov 16, 2018
72d485d
(wip) refactor test
simonjayhawkins Nov 16, 2018
dd84b8d
(wip) add tests with truncation
simonjayhawkins Nov 17, 2018
57c035f
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Nov 18, 2018
9b7eaae
(wip) parametrize truncation tests
simonjayhawkins Nov 18, 2018
7383c8a
(wip) refactor test helper
simonjayhawkins Nov 18, 2018
d89a180
(wip) removed unused header parametrization
simonjayhawkins Nov 18, 2018
24ba91c
(wip) refactor
simonjayhawkins Nov 18, 2018
a4feea8
add whatsnew entry
simonjayhawkins Nov 18, 2018
b4a2b10
resolve merge conflicts
simonjayhawkins Nov 18, 2018
e00cbaf
requested changes
simonjayhawkins Nov 19, 2018
8d8b138
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Nov 20, 2018
767541b
changes requested
simonjayhawkins Nov 26, 2018
b8f1e6a
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Nov 26, 2018
9eb162f
requested changes
simonjayhawkins Nov 27, 2018
48d118b
resolve merge conflicts
simonjayhawkins Nov 27, 2018
28fab9d
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Dec 3, 2018
d60fa0b
double backticks on MultiIndex
simonjayhawkins Dec 3, 2018
d3986f0
add code comments
simonjayhawkins Dec 9, 2018
1febf76
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Dec 9, 2018
6d60064
additional test case for gh-22783
simonjayhawkins Dec 10, 2018
1f61968
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Dec 10, 2018
bd815e7
resolve merge conflicts
simonjayhawkins Dec 13, 2018
7da52a1
add test case
simonjayhawkins Dec 14, 2018
0a0f82f
make show_col_idx_names class property
simonjayhawkins Dec 14, 2018
bc7f8c7
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Dec 14, 2018
8d2d68a
parametrize truncation tests
simonjayhawkins Dec 14, 2018
d2e233e
fix whitespace
simonjayhawkins Dec 14, 2018
bdaa279
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Dec 14, 2018
b7e4f54
make row_levels class property
simonjayhawkins Dec 14, 2018
613ce00
Merge remote-tracking branch 'upstream/master' into issue22579
simonjayhawkins Dec 28, 2018
5b635e4
move data files
simonjayhawkins Dec 28, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 25 additions & 30 deletions pandas/io/formats/html.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,31 +195,14 @@ def write_result(self, buf):
buffer_put_lines(buf, self.elements)

def _write_header(self, indent):
truncate_h = self.fmt.truncate_h
row_levels = self.frame.index.nlevels
if not self.fmt.header:
# write nothing
return indent

def _column_header():
if self.fmt.index:
row = [''] * (self.frame.index.nlevels - 1)
else:
row = []

if isinstance(self.columns, ABCMultiIndex):
if self.fmt.has_column_names and self.fmt.index:
row.append(single_column_table(self.columns.names))
else:
row.append('')
style = "text-align: {just};".format(just=self.fmt.justify)
row.extend([single_column_table(c, self.fmt.justify, style)
for c in self.columns])
else:
if self.fmt.index:
row.append(self.columns.name or '')
row.extend(self.columns)
return row
truncate_h = self.fmt.truncate_h
row_levels = self.frame.index.nlevels
has_column_names = self.fmt.has_column_names
show_index_names = self.fmt.show_index_names

self.write('<thead>', indent)

Expand Down Expand Up @@ -282,11 +265,12 @@ def _column_header():
values = (values[:ins_col] + [u('...')] +
values[ins_col:])

name = self.columns.names[lnum]
row = [''] * (row_levels - 1) + ['' if name is None else
pprint_thing(name)]

if row == [""] and self.fmt.index is False:
show_column_names = has_column_names and show_index_names
if self.fmt.index or show_column_names:
name = self.columns.names[lnum]
row = [''] * (row_levels - 1) + ['' if name is None else
pprint_thing(name)]
else:
row = []

tags = {}
Expand All @@ -302,14 +286,19 @@ def _column_header():
self.write_tr(row, indent, self.indent_delta, tags=tags,
header=True)
else:
col_row = _column_header()
if self.fmt.index:
row = [''] * (row_levels - 1) + [self.columns.name or '']
else:
row = []
row.extend(self.columns)

align = self.fmt.justify

if truncate_h:
ins_col = row_levels + self.fmt.tr_col_num
col_row.insert(ins_col, '...')
row.insert(ins_col, '...')

self.write_tr(col_row, indent, self.indent_delta, header=True,
self.write_tr(row, indent, self.indent_delta, header=True,
align=align)

if all((self.fmt.has_index_names,
Expand Down Expand Up @@ -337,14 +326,20 @@ def _write_body(self, indent):
fmt_values[i] = self.fmt._format_col(i)

# write values
has_column_names = self.fmt.has_column_names
if self.fmt.index:
if isinstance(self.frame.index, ABCMultiIndex):
self._write_hierarchical_rows(fmt_values, indent)
else:
self._write_regular_rows(fmt_values, indent)
else:
for i in range(min(len(self.frame), self.max_rows)):
row = [fmt_values[j][i] for j in range(len(self.columns))]
if has_column_names and self.fmt.show_index_names:
row = ['']
else:
row = []
row = row + [fmt_values[j][i]
for j in range(len(self.columns))]
self.write_tr(row, indent, self.indent_delta, tags=None)

indent -= self.indent_delta
Expand Down
Loading