@@ -45,23 +45,11 @@ def __init__(self, formatter, classes=None, notebook=False, border=None,
45
45
46
46
@property
47
47
def show_row_idx_names (self ):
48
- return all ((self .fmt .has_index_names ,
49
- self .fmt .index ,
50
- self .fmt .show_index_names ))
48
+ return self .fmt .show_row_idx_names
51
49
52
50
@property
53
51
def show_col_idx_names (self ):
54
- # see gh-22579
55
- # Column misalignment also occurs for
56
- # a standard index when the columns index is named.
57
- # Determine if ANY column names need to be displayed
58
- # since if the row index is not displayed a column of
59
- # blank cells need to be included before the DataFrame values.
60
- # TODO: refactor to add show_col_idx_names property to
61
- # DataFrameFormatter
62
- return all ((self .fmt .has_column_names ,
63
- self .fmt .show_index_names ,
64
- self .fmt .header ))
52
+ return self .fmt .show_col_idx_names
65
53
66
54
@property
67
55
def row_levels (self ):
@@ -184,14 +172,28 @@ def write_style(self):
184
172
template = dedent ('\n ' .join ((template_first ,
185
173
template_mid ,
186
174
template_last )))
187
- if self .notebook :
188
- self .write (template )
175
+ self .write (template )
189
176
190
177
def write_result (self , buf ):
191
- indent = 0
192
- id_section = ""
193
- frame = self .frame
178
+ if self .notebook :
179
+ self .write ('<div>' )
180
+ self .write_style ()
181
+
182
+ self ._write_table ()
183
+
184
+ if self .should_show_dimensions :
185
+ by = chr (215 ) if compat .PY3 else unichr (215 ) # ×
186
+ self .write (u ('<p>{rows} rows {by} {cols} columns</p>' )
187
+ .format (rows = len (self .frame ),
188
+ by = by ,
189
+ cols = len (self .frame .columns )))
194
190
191
+ if self .notebook :
192
+ self .write ('</div>' )
193
+
194
+ buffer_put_lines (buf , self .elements )
195
+
196
+ def _write_table (self , indent = 0 ):
195
197
_classes = ['dataframe' ] # Default class.
196
198
use_mathjax = get_option ("display.html.use_mathjax" )
197
199
if not use_mathjax :
@@ -204,33 +206,21 @@ def write_result(self, buf):
204
206
.format (typ = type (self .classes )))
205
207
_classes .extend (self .classes )
206
208
207
- if self .notebook :
208
- self .write ('<div>' )
209
-
210
- self .write_style ()
211
-
212
- if self .table_id is not None :
209
+ if self .table_id is None :
210
+ id_section = ""
211
+ else :
213
212
id_section = ' id="{table_id}"' .format (table_id = self .table_id )
213
+
214
214
self .write ('<table border="{border}" class="{cls}"{id_section}>'
215
215
.format (border = self .border , cls = ' ' .join (_classes ),
216
216
id_section = id_section ), indent )
217
217
218
- indent += self .indent_delta
219
- indent = self ._write_header (indent )
220
- indent = self ._write_body (indent )
218
+ if self .fmt .header or self .show_row_idx_names :
219
+ self ._write_header (indent + self .indent_delta )
221
220
222
- self .write ('</table>' , indent )
223
- if self .should_show_dimensions :
224
- by = chr (215 ) if compat .PY3 else unichr (215 ) # ×
225
- self .write (u ('<p>{rows} rows {by} {cols} columns</p>' )
226
- .format (rows = len (frame ),
227
- by = by ,
228
- cols = len (frame .columns )))
221
+ self ._write_body (indent + self .indent_delta )
229
222
230
- if self .notebook :
231
- self .write ('</div>' )
232
-
233
- buffer_put_lines (buf , self .elements )
223
+ self .write ('</table>' , indent )
234
224
235
225
def _write_col_header (self , indent ):
236
226
truncate_h = self .fmt .truncate_h
@@ -359,41 +349,29 @@ def _write_row_header(self, indent):
359
349
self .write_tr (row , indent , self .indent_delta , header = True )
360
350
361
351
def _write_header (self , indent ):
362
- if not (self .fmt .header or self .show_row_idx_names ):
363
- # write nothing
364
- return indent
365
-
366
352
self .write ('<thead>' , indent )
367
- indent += self .indent_delta
368
353
369
354
if self .fmt .header :
370
- self ._write_col_header (indent )
355
+ self ._write_col_header (indent + self . indent_delta )
371
356
372
357
if self .show_row_idx_names :
373
- self ._write_row_header (indent )
358
+ self ._write_row_header (indent + self . indent_delta )
374
359
375
- indent -= self .indent_delta
376
360
self .write ('</thead>' , indent )
377
361
378
- return indent
379
-
380
362
def _write_body (self , indent ):
381
363
self .write ('<tbody>' , indent )
382
- indent += self .indent_delta
383
-
384
364
fmt_values = {i : self .fmt ._format_col (i ) for i in range (self .ncols )}
385
365
386
366
# write values
387
367
if self .fmt .index and isinstance (self .frame .index , ABCMultiIndex ):
388
- self ._write_hierarchical_rows (fmt_values , indent )
368
+ self ._write_hierarchical_rows (
369
+ fmt_values , indent + self .indent_delta )
389
370
else :
390
- self ._write_regular_rows (fmt_values , indent )
371
+ self ._write_regular_rows (
372
+ fmt_values , indent + self .indent_delta )
391
373
392
- indent -= self .indent_delta
393
374
self .write ('</tbody>' , indent )
394
- indent -= self .indent_delta
395
-
396
- return indent
397
375
398
376
def _write_regular_rows (self , fmt_values , indent ):
399
377
truncate_h = self .fmt .truncate_h
0 commit comments