Skip to content

Commit 71ef0aa

Browse files
committed
add tests and references
1 parent 8cc2a11 commit 71ef0aa

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

pandas/io/formats/excel.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
DataFrame,
3838
Index,
3939
MultiIndex,
40+
Period,
4041
PeriodIndex,
4142
)
4243
import pandas.core.common as com
@@ -825,8 +826,8 @@ def _format_hierarchical_rows(self) -> Iterable[ExcelCell]:
825826
allow_fill=levels._can_hold_na,
826827
fill_value=levels._na_value,
827828
)
828-
829-
if isinstance(values, PeriodIndex):
829+
# GH#60099
830+
if isinstance(values[0], Period):
830831
values = values.to_timestamp()
831832

832833
for i, span_val in spans.items():
@@ -852,7 +853,7 @@ def _format_hierarchical_rows(self) -> Iterable[ExcelCell]:
852853
# Format hierarchical rows with non-merged values.
853854
for indexcolvals in zip(*self.df.index):
854855
for idx, indexcolval in enumerate(indexcolvals):
855-
856+
# GH#60099
856857
if isinstance(indexcolval, Period):
857858
indexcolval = indexcolval.to_timestamp()
858859

pandas/tests/io/formats/test_to_excel.py

+39
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99

1010
from pandas.errors import CSSWarning
1111

12+
from pandas import (
13+
DataFrame,
14+
MultiIndex,
15+
Timestamp,
16+
period_range,
17+
to_datetime,
18+
)
1219
import pandas._testing as tm
1320

1421
from pandas.io.formats.excel import (
@@ -428,3 +435,35 @@ def test_css_excel_cell_cache(styles, cache_hits, cache_misses):
428435

429436
assert cache_info.hits == cache_hits
430437
assert cache_info.misses == cache_misses
438+
439+
440+
def test_format_hierarchical_rows_with_periodindex():
441+
# GH#60099
442+
period_index = period_range(start="2006-10-06", end="2006-10-07", freq="D")
443+
df = DataFrame({"A": [0, 0]}, index=period_index)
444+
converter = CSSToExcelConverter()
445+
cells: list[CssExcelCell] = list(converter._format_hierarchical_rows(df))
446+
for cell in cells:
447+
assert isinstance(cell.val, Timestamp), "Expected cell value to be a Timestamp"
448+
assert cell.val in to_datetime(
449+
["2006-10-06", "2006-10-07"]
450+
), "Unexpected cell value"
451+
452+
453+
def test_format_hierarchical_rows_with_period():
454+
# GH#60099
455+
period_index = period_range(start="2006-10-06", end="2006-10-07", freq="D")
456+
number_index = ["1", "2"]
457+
df = DataFrame(
458+
{"A": [0, 0]}, index=MultiIndex.from_arrays([period_index, number_index])
459+
)
460+
converter = CSSToExcelConverter()
461+
cells: list[CssExcelCell] = list(converter._format_hierarchical_rows(df))
462+
for cell in cells:
463+
if cell.css_col == 0:
464+
assert isinstance(
465+
cell.val, Timestamp
466+
), "Expected cell value to be a Timestamp"
467+
assert cell.val in to_datetime(
468+
["2006-10-06", "2006-10-07"]
469+
), "Unexpected cell value"

0 commit comments

Comments
 (0)