diff --git a/pandas/core/frame.py b/pandas/core/frame.py index d741ca21d8ca7..52e85b86342b6 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -8939,7 +8939,11 @@ def explode( 3 4 1 e """ if not self.columns.is_unique: - raise ValueError("columns must be unique") + duplicate_cols = self.columns[self.columns.duplicated()].tolist() + raise ValueError( + "DataFrame columns must be unique. " + + f"Duplicate columns: {duplicate_cols}" + ) columns: list[Hashable] if is_scalar(column) or isinstance(column, tuple): diff --git a/pandas/tests/frame/methods/test_explode.py b/pandas/tests/frame/methods/test_explode.py index 8716a181120f6..6d9874dc58c17 100644 --- a/pandas/tests/frame/methods/test_explode.py +++ b/pandas/tests/frame/methods/test_explode.py @@ -1,3 +1,5 @@ +import re + import numpy as np import pytest @@ -18,7 +20,10 @@ def test_error(): df.explode(list("AA")) df.columns = list("AA") - with pytest.raises(ValueError, match="columns must be unique"): + with pytest.raises( + ValueError, + match=re.escape("DataFrame columns must be unique. Duplicate columns: ['A']"), + ): df.explode("A")