diff --git a/skore/src/skore/_sklearn/_estimator/data_accessor.py b/skore/src/skore/_sklearn/_estimator/data_accessor.py index 201f371902..80236007b3 100644 --- a/skore/src/skore/_sklearn/_estimator/data_accessor.py +++ b/skore/src/skore/_sklearn/_estimator/data_accessor.py @@ -50,6 +50,10 @@ def _retrieve_data_as_frame( raise ValueError(err_msg.format(f"X_{dataset}", data_source)) elif not sbd.is_dataframe(X): X = pd.DataFrame(X, columns=[f"Feature {i}" for i in range(X.shape[1])]) + else: + if not all(isinstance(col, str) for col in X.columns): + X = X.copy() + X.columns = [str(col) for col in X.columns] if with_y: if y is None: @@ -63,6 +67,13 @@ def _retrieve_data_as_frame( else: columns = [f"Target {i}" for i in range(y.shape[1])] y = pd.DataFrame(y, columns=columns) + else: + if not all(isinstance(col, str) for col in y.columns): + y = y.copy() + if y.shape[1] == 1 and list(y.columns) == [0]: + y.columns = ["Target"] + else: + y.columns = [str(col) for col in y.columns] return X, y diff --git a/skore/tests/unit/displays/table_report/test_estimator.py b/skore/tests/unit/displays/table_report/test_estimator.py index 29b626908e..cfdb0b075a 100644 --- a/skore/tests/unit/displays/table_report/test_estimator.py +++ b/skore/tests/unit/displays/table_report/test_estimator.py @@ -69,6 +69,8 @@ def test_constructor(display): pd.DataFrame( np.ones((100, 5)), columns=[f"Feature number {i}" for i in range(5)] ), + pd.DataFrame(np.ones((100, 5))), + pd.DataFrame(np.ones((100, 5)), columns=["a", 1, "c", 3, "e"]), ], ) @pytest.mark.parametrize( @@ -78,6 +80,7 @@ def test_constructor(display): np.ones(100), pd.Series(np.ones(100)), pd.DataFrame(np.ones((100, 1)), columns=["Target"]), + pd.DataFrame(np.ones((100, 1))), ], ) def test_X_y(X, y):