Skip to content

Commit bc7ce13

Browse files
jbrockmendelclaude
andauthored
TST: regression test for concat with keys and mixed-freq PeriodIndex columns (#65439)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f422a5d commit bc7ce13

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

pandas/tests/reshape/concat/test_datetimes.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,30 @@ def test_concat_period_other_series3(self):
575575
tm.assert_series_equal(result, expected)
576576
assert result.dtype == "object"
577577

578+
def test_concat_keys_mixed_freq_period_columns(self):
579+
# GH#51489 concat with keys must not raise IncompatibleFrequency
580+
# when the inputs have PeriodIndex columns with different freq
581+
q_period = pd.period_range("2022-1-1", "2022-12-31", freq="Q")
582+
y_period = pd.period_range("2019-1-1", "2023-1-1", freq="Y")
583+
584+
q_df = DataFrame([range(len(q_period))], columns=q_period)
585+
y_df = DataFrame([range(len(y_period))], columns=y_period)
586+
587+
result = concat([q_df, y_df], keys=["Quarterly", "Yearly"], axis=1)
588+
589+
expected_inner = Index(list(q_period) + list(y_period), dtype=object)
590+
expected_columns = MultiIndex.from_arrays(
591+
[
592+
["Quarterly"] * len(q_period) + ["Yearly"] * len(y_period),
593+
expected_inner,
594+
]
595+
)
596+
expected = DataFrame(
597+
[list(range(len(q_period))) + list(range(len(y_period)))],
598+
columns=expected_columns,
599+
)
600+
tm.assert_frame_equal(result, expected)
601+
578602

579603
def test_concat_timedelta64_block():
580604
rng = to_timedelta(np.arange(10), unit="s")

0 commit comments

Comments
 (0)