From 76f58fc0d7b4b69b6f7f33988f6b0d3313976f5e Mon Sep 17 00:00:00 2001 From: ganevgv Date: Wed, 6 Nov 2019 21:54:13 +0000 Subject: [PATCH 1/8] add test for indexing with single/double tuple --- pandas/tests/frame/test_indexing.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pandas/tests/frame/test_indexing.py b/pandas/tests/frame/test_indexing.py index e215c90d2eb04..2f092f27c2e5e 100644 --- a/pandas/tests/frame/test_indexing.py +++ b/pandas/tests/frame/test_indexing.py @@ -2626,6 +2626,20 @@ def test_index_namedtuple(self): result = df.loc[IndexType("foo", "bar")]["A"] assert result == 1 + def test_index_single_double_tuples(self): + # GH 20991 + tuple_1 = tuple([1, 2]) + tuple_2 = tuple([1]) + df = pd.DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") + + result = df.loc[[df.index[0]]] + expected = pd.DataFrame([[tuple_1]], columns=["A"]).set_index("A") + tm.assert_frame_equal(result, expected) + + result = df.loc[[df.index[1]]] + expected = pd.DataFrame([[tuple_2]], columns=["A"]).set_index("A") + tm.assert_frame_equal(result, expected) + def test_boolean_indexing(self): idx = list(range(3)) cols = ["A", "B", "C"] From 039c18a13546ad20f35510649e58b94cd61e5a1e Mon Sep 17 00:00:00 2001 From: ganevgv Date: Wed, 6 Nov 2019 21:59:06 +0000 Subject: [PATCH 2/8] remove pd from pd.DataFrame --- pandas/tests/frame/test_indexing.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/frame/test_indexing.py b/pandas/tests/frame/test_indexing.py index 2f092f27c2e5e..d21700cdcd09c 100644 --- a/pandas/tests/frame/test_indexing.py +++ b/pandas/tests/frame/test_indexing.py @@ -2630,14 +2630,14 @@ def test_index_single_double_tuples(self): # GH 20991 tuple_1 = tuple([1, 2]) tuple_2 = tuple([1]) - df = pd.DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") + df = DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") result = df.loc[[df.index[0]]] - expected = pd.DataFrame([[tuple_1]], columns=["A"]).set_index("A") + expected = DataFrame([[tuple_1]], columns=["A"]).set_index("A") tm.assert_frame_equal(result, expected) result = df.loc[[df.index[1]]] - expected = pd.DataFrame([[tuple_2]], columns=["A"]).set_index("A") + expected = DataFrame([[tuple_2]], columns=["A"]).set_index("A") tm.assert_frame_equal(result, expected) def test_boolean_indexing(self): From 12a8e206a4199f29ca321e6d71c2dc058ab70749 Mon Sep 17 00:00:00 2001 From: ganevgv Date: Fri, 8 Nov 2019 01:18:42 +0000 Subject: [PATCH 3/8] remove .set_index() and .index[] --- pandas/tests/frame/test_indexing.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pandas/tests/frame/test_indexing.py b/pandas/tests/frame/test_indexing.py index d21700cdcd09c..1793f4e2b4ac9 100644 --- a/pandas/tests/frame/test_indexing.py +++ b/pandas/tests/frame/test_indexing.py @@ -2630,14 +2630,17 @@ def test_index_single_double_tuples(self): # GH 20991 tuple_1 = tuple([1, 2]) tuple_2 = tuple([1]) - df = DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") + idx = pd.Index([tuple_1, tuple_2], name="A", tupleize_cols=False) + df = DataFrame(index=idx) - result = df.loc[[df.index[0]]] - expected = DataFrame([[tuple_1]], columns=["A"]).set_index("A") + result = df.loc[[tuple_1]] + idx_1 = pd.Index([tuple_1], name="A", tupleize_cols=False) + expected = DataFrame(index=idx_1) tm.assert_frame_equal(result, expected) - result = df.loc[[df.index[1]]] - expected = DataFrame([[tuple_2]], columns=["A"]).set_index("A") + result = df.loc[[tuple_2]] + idx_2 = pd.Index([tuple_2], name="A", tupleize_cols=False) + expected = DataFrame(index=idx_2) tm.assert_frame_equal(result, expected) def test_boolean_indexing(self): From 24e7c1fea4fccc5582e981e8c04092069bf5cdab Mon Sep 17 00:00:00 2001 From: ganevgv Date: Fri, 8 Nov 2019 16:51:59 +0000 Subject: [PATCH 4/8] add parameterize --- pandas/tests/frame/test_indexing.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/pandas/tests/frame/test_indexing.py b/pandas/tests/frame/test_indexing.py index 1793f4e2b4ac9..d6761c979bd51 100644 --- a/pandas/tests/frame/test_indexing.py +++ b/pandas/tests/frame/test_indexing.py @@ -2626,21 +2626,15 @@ def test_index_namedtuple(self): result = df.loc[IndexType("foo", "bar")]["A"] assert result == 1 - def test_index_single_double_tuples(self): + @pytest.mark.parametrize("tpl", [tuple([1]), tuple([1, 2])]) + def test_index_single_double_tuples(self, tpl): # GH 20991 - tuple_1 = tuple([1, 2]) - tuple_2 = tuple([1]) - idx = pd.Index([tuple_1, tuple_2], name="A", tupleize_cols=False) + idx = pd.Index([tuple([1]), tuple([1, 2])], name="A", tupleize_cols=False) df = DataFrame(index=idx) - result = df.loc[[tuple_1]] - idx_1 = pd.Index([tuple_1], name="A", tupleize_cols=False) - expected = DataFrame(index=idx_1) - tm.assert_frame_equal(result, expected) - - result = df.loc[[tuple_2]] - idx_2 = pd.Index([tuple_2], name="A", tupleize_cols=False) - expected = DataFrame(index=idx_2) + result = df.loc[[tpl]] + idx = pd.Index([tpl], name="A", tupleize_cols=False) + expected = DataFrame(index=idx) tm.assert_frame_equal(result, expected) def test_boolean_indexing(self): From 4cfab61ec8382d0639d9ec67a683337392ea92a5 Mon Sep 17 00:00:00 2001 From: ganevgv Date: Wed, 6 Nov 2019 21:54:13 +0000 Subject: [PATCH 5/8] add test for indexing with single/double tuple --- 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 24a431fe42cf8..52cbed24dc6ef 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -2624,6 +2624,20 @@ def test_index_namedtuple(self): result = df.loc[IndexType("foo", "bar")]["A"] assert result == 1 + def test_index_single_double_tuples(self): + # GH 20991 + tuple_1 = tuple([1, 2]) + tuple_2 = tuple([1]) + df = pd.DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") + + result = df.loc[[df.index[0]]] + expected = pd.DataFrame([[tuple_1]], columns=["A"]).set_index("A") + tm.assert_frame_equal(result, expected) + + result = df.loc[[df.index[1]]] + expected = pd.DataFrame([[tuple_2]], columns=["A"]).set_index("A") + tm.assert_frame_equal(result, expected) + def test_boolean_indexing(self): idx = list(range(3)) cols = ["A", "B", "C"] From acafc9e1ad6c17c5231d896c19d6b821f2c5558d Mon Sep 17 00:00:00 2001 From: ganevgv Date: Wed, 6 Nov 2019 21:59:06 +0000 Subject: [PATCH 6/8] remove pd from pd.DataFrame --- pandas/tests/frame/indexing/test_indexing.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index 52cbed24dc6ef..4c42d73f3ee40 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -2628,14 +2628,14 @@ def test_index_single_double_tuples(self): # GH 20991 tuple_1 = tuple([1, 2]) tuple_2 = tuple([1]) - df = pd.DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") + df = DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") result = df.loc[[df.index[0]]] - expected = pd.DataFrame([[tuple_1]], columns=["A"]).set_index("A") + expected = DataFrame([[tuple_1]], columns=["A"]).set_index("A") tm.assert_frame_equal(result, expected) result = df.loc[[df.index[1]]] - expected = pd.DataFrame([[tuple_2]], columns=["A"]).set_index("A") + expected = DataFrame([[tuple_2]], columns=["A"]).set_index("A") tm.assert_frame_equal(result, expected) def test_boolean_indexing(self): From 9652128b666a30008d4462ad5cb9d00f4771ed60 Mon Sep 17 00:00:00 2001 From: ganevgv Date: Fri, 8 Nov 2019 01:18:42 +0000 Subject: [PATCH 7/8] remove .set_index() and .index[] --- pandas/tests/frame/indexing/test_indexing.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index 4c42d73f3ee40..f6c7efc860aa6 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -2628,14 +2628,17 @@ def test_index_single_double_tuples(self): # GH 20991 tuple_1 = tuple([1, 2]) tuple_2 = tuple([1]) - df = DataFrame([[tuple_1], [tuple_2]], columns=["A"]).set_index("A") + idx = pd.Index([tuple_1, tuple_2], name="A", tupleize_cols=False) + df = DataFrame(index=idx) - result = df.loc[[df.index[0]]] - expected = DataFrame([[tuple_1]], columns=["A"]).set_index("A") + result = df.loc[[tuple_1]] + idx_1 = pd.Index([tuple_1], name="A", tupleize_cols=False) + expected = DataFrame(index=idx_1) tm.assert_frame_equal(result, expected) - result = df.loc[[df.index[1]]] - expected = DataFrame([[tuple_2]], columns=["A"]).set_index("A") + result = df.loc[[tuple_2]] + idx_2 = pd.Index([tuple_2], name="A", tupleize_cols=False) + expected = DataFrame(index=idx_2) tm.assert_frame_equal(result, expected) def test_boolean_indexing(self): From a14d23d1ff10b37cf448966142cbcfb50c6007cf Mon Sep 17 00:00:00 2001 From: ganevgv Date: Fri, 8 Nov 2019 16:51:59 +0000 Subject: [PATCH 8/8] add parameterize --- pandas/tests/frame/indexing/test_indexing.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index f6c7efc860aa6..9a7cd4ace686f 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -2624,21 +2624,15 @@ def test_index_namedtuple(self): result = df.loc[IndexType("foo", "bar")]["A"] assert result == 1 - def test_index_single_double_tuples(self): + @pytest.mark.parametrize("tpl", [tuple([1]), tuple([1, 2])]) + def test_index_single_double_tuples(self, tpl): # GH 20991 - tuple_1 = tuple([1, 2]) - tuple_2 = tuple([1]) - idx = pd.Index([tuple_1, tuple_2], name="A", tupleize_cols=False) + idx = pd.Index([tuple([1]), tuple([1, 2])], name="A", tupleize_cols=False) df = DataFrame(index=idx) - result = df.loc[[tuple_1]] - idx_1 = pd.Index([tuple_1], name="A", tupleize_cols=False) - expected = DataFrame(index=idx_1) - tm.assert_frame_equal(result, expected) - - result = df.loc[[tuple_2]] - idx_2 = pd.Index([tuple_2], name="A", tupleize_cols=False) - expected = DataFrame(index=idx_2) + result = df.loc[[tpl]] + idx = pd.Index([tpl], name="A", tupleize_cols=False) + expected = DataFrame(index=idx) tm.assert_frame_equal(result, expected) def test_boolean_indexing(self):