From 4e220747eeea6a3f7be5b15fcb743b531ae73fd9 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Feb 2022 23:21:26 +0800 Subject: [PATCH 1/5] add test --- .../indexing/multiindex/test_multiindex.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/pandas/tests/indexing/multiindex/test_multiindex.py b/pandas/tests/indexing/multiindex/test_multiindex.py index 9fa873a212cbd..de1cea67273c8 100644 --- a/pandas/tests/indexing/multiindex/test_multiindex.py +++ b/pandas/tests/indexing/multiindex/test_multiindex.py @@ -149,3 +149,58 @@ def test_rename_multiindex_with_duplicates(self): mi2 = MultiIndex.from_tuples([("Apple", "cat"), ("B", "cat"), ("B", "cat")]) expected = DataFrame(index=mi2) tm.assert_frame_equal(df, expected) + + def test_subtracting_two_series_with_unordered_index_and_all_nan_index(self): + # GH 38439 + a_index_result = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_result = pd.MultiIndex.from_tuples([(np.nan, np.nan), (82.0, np.nan)]) + a_series_result = Series([1, 2], index=a_index_result) + b_series_result = Series([1, 2], index=b_index_result) + result = a_series_result.align(b_series_result) + + a_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + a_series_expected = Series([1, 2], index=a_index_expected) + b_series_expected = Series([1, 1], index=b_index_expected) + a_series_expected.index = a_series_expected.index.set_levels( + [ + a_series_expected.index.levels[0].astype("float"), + a_series_expected.index.levels[1].astype("float"), + ] + ) + b_series_expected.index = b_series_expected.index.set_levels( + [ + b_series_expected.index.levels[0].astype("float"), + b_series_expected.index.levels[1].astype("float"), + ] + ) + + tm.assert_series_equal(result[0], a_series_expected) + tm.assert_series_equal(result[1], b_series_expected) + + a_index_result = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_result = pd.MultiIndex.from_tuples([(np.nan, np.nan), (81.0, np.nan)]) + a_series_result = Series([1, 2], index=a_index_result) + b_series_result = Series([1, 2], index=b_index_result) + result = a_series_result.align(b_series_result) + + a_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + a_series_expected = Series([1, 2], index=a_index_expected) + b_series_expected = Series([2, 1], index=b_index_expected) + a_series_expected.index = a_series_expected.index.set_levels( + [ + a_series_expected.index.levels[0].astype("float"), + a_series_expected.index.levels[1].astype("float"), + ] + ) + b_series_expected.index = b_series_expected.index.set_levels( + [ + b_series_expected.index.levels[0].astype("float"), + b_series_expected.index.levels[1].astype("float"), + ] + ) + + tm.assert_series_equal(result[0], a_series_expected) + tm.assert_series_equal(result[1], b_series_expected) + From 0f10be8ef6723497ff2c2dd5100c450368ee7fb6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Feb 2022 23:25:51 +0800 Subject: [PATCH 2/5] autopep --- pandas/tests/indexing/multiindex/test_multiindex.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/tests/indexing/multiindex/test_multiindex.py b/pandas/tests/indexing/multiindex/test_multiindex.py index de1cea67273c8..aaf1ab3cf44a4 100644 --- a/pandas/tests/indexing/multiindex/test_multiindex.py +++ b/pandas/tests/indexing/multiindex/test_multiindex.py @@ -203,4 +203,3 @@ def test_subtracting_two_series_with_unordered_index_and_all_nan_index(self): tm.assert_series_equal(result[0], a_series_expected) tm.assert_series_equal(result[1], b_series_expected) - From 0afcabfa2485c065d6f08cbe34617f430964b4a3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Feb 2022 23:35:10 +0800 Subject: [PATCH 3/5] autopep --- .../tests/indexing/multiindex/test_multiindex.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pandas/tests/indexing/multiindex/test_multiindex.py b/pandas/tests/indexing/multiindex/test_multiindex.py index aaf1ab3cf44a4..62334466e9372 100644 --- a/pandas/tests/indexing/multiindex/test_multiindex.py +++ b/pandas/tests/indexing/multiindex/test_multiindex.py @@ -152,14 +152,14 @@ def test_rename_multiindex_with_duplicates(self): def test_subtracting_two_series_with_unordered_index_and_all_nan_index(self): # GH 38439 - a_index_result = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_result = pd.MultiIndex.from_tuples([(np.nan, np.nan), (82.0, np.nan)]) + a_index_result = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_result = MultiIndex.from_tuples([(np.nan, np.nan), (82.0, np.nan)]) a_series_result = Series([1, 2], index=a_index_result) b_series_result = Series([1, 2], index=b_index_result) result = a_series_result.align(b_series_result) - a_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + a_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) a_series_expected = Series([1, 2], index=a_index_expected) b_series_expected = Series([1, 1], index=b_index_expected) a_series_expected.index = a_series_expected.index.set_levels( @@ -178,14 +178,14 @@ def test_subtracting_two_series_with_unordered_index_and_all_nan_index(self): tm.assert_series_equal(result[0], a_series_expected) tm.assert_series_equal(result[1], b_series_expected) - a_index_result = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_result = pd.MultiIndex.from_tuples([(np.nan, np.nan), (81.0, np.nan)]) + a_index_result = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_result = MultiIndex.from_tuples([(np.nan, np.nan), (81.0, np.nan)]) a_series_result = Series([1, 2], index=a_index_result) b_series_result = Series([1, 2], index=b_index_result) result = a_series_result.align(b_series_result) - a_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_expected = pd.MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + a_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) + b_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) a_series_expected = Series([1, 2], index=a_index_expected) b_series_expected = Series([2, 1], index=b_index_expected) a_series_expected.index = a_series_expected.index.set_levels( From 761b39400b7de1681e1b1b13b65c1c7e3e04f02f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 11 Feb 2022 23:21:07 +0800 Subject: [PATCH 4/5] add --- .../indexing/multiindex/test_multiindex.py | 80 +++++++++++-------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/pandas/tests/indexing/multiindex/test_multiindex.py b/pandas/tests/indexing/multiindex/test_multiindex.py index 62334466e9372..a7836ba089c4b 100644 --- a/pandas/tests/indexing/multiindex/test_multiindex.py +++ b/pandas/tests/indexing/multiindex/test_multiindex.py @@ -1,4 +1,5 @@ import numpy as np +import pytest import pandas._libs.index as _index from pandas.errors import PerformanceWarning @@ -150,44 +151,53 @@ def test_rename_multiindex_with_duplicates(self): expected = DataFrame(index=mi2) tm.assert_frame_equal(df, expected) - def test_subtracting_two_series_with_unordered_index_and_all_nan_index(self): + @pytest.mark.parametrize( + "data_result, data_expected", + [ + ( + [ + [(81.0, np.nan), (np.nan, np.nan)], + [(np.nan, np.nan), (82.0, np.nan)], + [1, 2], + [1, 2], + ], + [ + [(81.0, np.nan), (np.nan, np.nan)], + [(81.0, np.nan), (np.nan, np.nan)], + [1, 2], + [1, 1], + ], + ), + ( + [ + [(81.0, np.nan), (np.nan, np.nan)], + [(np.nan, np.nan), (81.0, np.nan)], + [1, 2], + [1, 2], + ], + [ + [(81.0, np.nan), (np.nan, np.nan)], + [(81.0, np.nan), (np.nan, np.nan)], + [1, 2], + [2, 1], + ], + ), + ], + ) + def test_subtracting_two_series_with_unordered_index_and_all_nan_index( + data_result, data_expected + ): # GH 38439 - a_index_result = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_result = MultiIndex.from_tuples([(np.nan, np.nan), (82.0, np.nan)]) - a_series_result = Series([1, 2], index=a_index_result) - b_series_result = Series([1, 2], index=b_index_result) - result = a_series_result.align(b_series_result) - - a_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - a_series_expected = Series([1, 2], index=a_index_expected) - b_series_expected = Series([1, 1], index=b_index_expected) - a_series_expected.index = a_series_expected.index.set_levels( - [ - a_series_expected.index.levels[0].astype("float"), - a_series_expected.index.levels[1].astype("float"), - ] - ) - b_series_expected.index = b_series_expected.index.set_levels( - [ - b_series_expected.index.levels[0].astype("float"), - b_series_expected.index.levels[1].astype("float"), - ] - ) - - tm.assert_series_equal(result[0], a_series_expected) - tm.assert_series_equal(result[1], b_series_expected) - - a_index_result = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_result = MultiIndex.from_tuples([(np.nan, np.nan), (81.0, np.nan)]) - a_series_result = Series([1, 2], index=a_index_result) - b_series_result = Series([1, 2], index=b_index_result) + a_index_result = MultiIndex.from_tuples(data_result[0]) + b_index_result = MultiIndex.from_tuples(data_result[1]) + a_series_result = Series(data_result[2], index=a_index_result) + b_series_result = Series(data_result[3], index=b_index_result) result = a_series_result.align(b_series_result) - a_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - b_index_expected = MultiIndex.from_tuples([(81.0, np.nan), (np.nan, np.nan)]) - a_series_expected = Series([1, 2], index=a_index_expected) - b_series_expected = Series([2, 1], index=b_index_expected) + a_index_expected = MultiIndex.from_tuples(data_expected[0]) + b_index_expected = MultiIndex.from_tuples(data_expected[1]) + a_series_expected = Series(data_expected[2], index=a_index_expected) + b_series_expected = Series(data_expected[3], index=b_index_expected) a_series_expected.index = a_series_expected.index.set_levels( [ a_series_expected.index.levels[0].astype("float"), From 6e9e41ac643172da9735d045eb80cbb60723fb9b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 11 Feb 2022 23:22:12 +0800 Subject: [PATCH 5/5] add --- pandas/tests/indexing/multiindex/test_multiindex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/indexing/multiindex/test_multiindex.py b/pandas/tests/indexing/multiindex/test_multiindex.py index a7836ba089c4b..b88c411636610 100644 --- a/pandas/tests/indexing/multiindex/test_multiindex.py +++ b/pandas/tests/indexing/multiindex/test_multiindex.py @@ -185,7 +185,7 @@ def test_rename_multiindex_with_duplicates(self): ], ) def test_subtracting_two_series_with_unordered_index_and_all_nan_index( - data_result, data_expected + self, data_result, data_expected ): # GH 38439 a_index_result = MultiIndex.from_tuples(data_result[0])