MCPcopy
hub / github.com/pandas-dev/pandas / _format_hierarchical_rows

Method _format_hierarchical_rows

pandas/io/formats/excel.py:764–850  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

762 yield from self._generate_body(coloffset)
763
764 def _format_hierarchical_rows(self) -> Iterable[ExcelCell]:
765 if self._has_aliases or self.header:
766 self.rowcounter += 1
767
768 gcolidx = 0
769
770 if self.index:
771 index_labels = self.df.index.names
772 # check for aliases
773 if self.index_label and isinstance(
774 self.index_label, (list, tuple, np.ndarray, Index)
775 ):
776 index_labels = self.index_label
777
778 # MultiIndex columns require an extra row
779 # with index names (blank if None) for
780 # unambiguous round-trip, Issue #11328
781 if isinstance(self.columns, MultiIndex):
782 self.rowcounter += 1
783
784 # if index labels are not empty go ahead and dump
785 if com.any_not_none(*index_labels) and self.header is not False:
786 for cidx, name in enumerate(index_labels):
787 yield ExcelCell(self.rowcounter - 1, cidx, name, None)
788
789 if self.merge_cells and self.merge_cells != "columns":
790 # Format hierarchical rows as merged cells.
791 level_strs = self.df.index._format_multi(
792 sparsify=True, include_names=False
793 )
794 level_lengths = get_level_lengths(level_strs)
795
796 for spans, levels, level_codes in zip(
797 level_lengths,
798 self.df.index.levels,
799 self.df.index.codes,
800 strict=False,
801 ):
802 values = levels.take(
803 level_codes,
804 allow_fill=levels._can_hold_na,
805 fill_value=levels._na_value,
806 )
807 # GH#60099
808 if isinstance(values[0], Period):
809 values = values.to_timestamp()
810
811 for i, span_val in spans.items():
812 mergestart, mergeend = None, None
813 if span_val > 1:
814 mergestart = self.rowcounter + i + span_val - 1
815 mergeend = gcolidx
816 yield CssExcelCell(
817 row=self.rowcounter + i,
818 col=gcolidx,
819 val=values[i],
820 style=None,
821 css_styles=getattr(self.styler, "ctx_index", None),

Callers 2

_format_bodyMethod · 0.95

Calls 8

_generate_bodyMethod · 0.95
get_level_lengthsFunction · 0.90
ExcelCellClass · 0.85
CssExcelCellClass · 0.85
_format_multiMethod · 0.80
takeMethod · 0.45
to_timestampMethod · 0.45
itemsMethod · 0.45