From f74c27c06eaf19c3e5ade20659e689cb54976d74 Mon Sep 17 00:00:00 2001 From: denisrei <39619011+DRiXD@users.noreply.github.com> Date: Wed, 23 Aug 2023 03:57:19 +0000 Subject: [PATCH 1/3] added test for bug gh#50372 --- pandas/tests/frame/indexing/test_indexing.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index 288aa1af746b6..61d30edda94b0 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -1251,7 +1251,21 @@ def test_type_error_multiindex(self): result = dg["x", 0] tm.assert_series_equal(result, expected) + + def test_tuple_string_column_names(self): + # GH#50372 + mi = MultiIndex.from_tuples([("a", "aa"), ("a", "ab"), ("b", "ba"), ("b", "bb")]) + df = DataFrame([range(0, 4), range(1, 5), range(2, 6)], columns=mi) + df["single_index"] = 0 + df_flat = df.copy() + df_flat.columns = df_flat.columns.to_flat_index() + df_flat["new_single_index"] = 0 + + df_flat = df_flat[[("a", "aa"), "new_single_index"]] + + assert df_flat.columns.equals(pd.Index([('a', 'aa'), 'new_single_index'])) + def test_getitem_interval_index_partial_indexing(self): # GH#36490 df = DataFrame( From 15c87fdf0e015756a731cd12be1fa72fce8123bb Mon Sep 17 00:00:00 2001 From: denisrei <39619011+DRiXD@users.noreply.github.com> Date: Wed, 23 Aug 2023 04:16:54 +0000 Subject: [PATCH 2/3] cleaned code to fit pre-commit --- pandas/tests/frame/indexing/test_indexing.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index 61d30edda94b0..08f160639d328 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -1251,10 +1251,12 @@ def test_type_error_multiindex(self): result = dg["x", 0] tm.assert_series_equal(result, expected) - + def test_tuple_string_column_names(self): # GH#50372 - mi = MultiIndex.from_tuples([("a", "aa"), ("a", "ab"), ("b", "ba"), ("b", "bb")]) + mi = MultiIndex.from_tuples( + [("a", "aa"), ("a", "ab"), ("b", "ba"), ("b", "bb")] + ) df = DataFrame([range(0, 4), range(1, 5), range(2, 6)], columns=mi) df["single_index"] = 0 @@ -1264,8 +1266,8 @@ def test_tuple_string_column_names(self): df_flat = df_flat[[("a", "aa"), "new_single_index"]] - assert df_flat.columns.equals(pd.Index([('a', 'aa'), 'new_single_index'])) - + assert df_flat.columns.equals(Index([("a", "aa"), "new_single_index"])) + def test_getitem_interval_index_partial_indexing(self): # GH#36490 df = DataFrame( From 1bdb01bb3914db5eb9e28d7d14f8869eac324a0d Mon Sep 17 00:00:00 2001 From: denisrei <39619011+DRiXD@users.noreply.github.com> Date: Wed, 23 Aug 2023 19:07:16 +0000 Subject: [PATCH 3/3] moved test to better fitting location --- pandas/tests/frame/indexing/test_indexing.py | 16 ---------------- .../tests/indexing/multiindex/test_getitem.py | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index 08f160639d328..288aa1af746b6 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -1252,22 +1252,6 @@ def test_type_error_multiindex(self): result = dg["x", 0] tm.assert_series_equal(result, expected) - def test_tuple_string_column_names(self): - # GH#50372 - mi = MultiIndex.from_tuples( - [("a", "aa"), ("a", "ab"), ("b", "ba"), ("b", "bb")] - ) - df = DataFrame([range(0, 4), range(1, 5), range(2, 6)], columns=mi) - df["single_index"] = 0 - - df_flat = df.copy() - df_flat.columns = df_flat.columns.to_flat_index() - df_flat["new_single_index"] = 0 - - df_flat = df_flat[[("a", "aa"), "new_single_index"]] - - assert df_flat.columns.equals(Index([("a", "aa"), "new_single_index"])) - def test_getitem_interval_index_partial_indexing(self): # GH#36490 df = DataFrame( diff --git a/pandas/tests/indexing/multiindex/test_getitem.py b/pandas/tests/indexing/multiindex/test_getitem.py index e2fbc0653695b..9d11827e2923e 100644 --- a/pandas/tests/indexing/multiindex/test_getitem.py +++ b/pandas/tests/indexing/multiindex/test_getitem.py @@ -145,6 +145,23 @@ def test_frame_getitem_simple_key_error( indexer(df) +def test_tuple_string_column_names(): + # GH#50372 + mi = MultiIndex.from_tuples([("a", "aa"), ("a", "ab"), ("b", "ba"), ("b", "bb")]) + df = DataFrame([range(0, 4), range(1, 5), range(2, 6)], columns=mi) + df["single_index"] = 0 + + df_flat = df.copy() + df_flat.columns = df_flat.columns.to_flat_index() + df_flat["new_single_index"] = 0 + + result = df_flat[[("a", "aa"), "new_single_index"]] + expected = DataFrame( + [[0, 0], [1, 0], [2, 0]], columns=Index([("a", "aa"), "new_single_index"]) + ) + tm.assert_frame_equal(result, expected) + + def test_frame_getitem_multicolumn_empty_level(): df = DataFrame({"a": ["1", "2", "3"], "b": ["2", "3", "4"]}) df.columns = [