Skip to content

Commit 34dd0ba

Browse files
author
Khor Chean Wei
authored
Testcase Subtracting two series with unordered index and all-nan index produces unexpected result (#45900)
* add test * autopep * autopep * add * add
1 parent 1b8fd29 commit 34dd0ba

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

pandas/tests/indexing/multiindex/test_multiindex.py

+64
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import numpy as np
2+
import pytest
23

34
import pandas._libs.index as _index
45
from pandas.errors import PerformanceWarning
@@ -149,3 +150,66 @@ def test_rename_multiindex_with_duplicates(self):
149150
mi2 = MultiIndex.from_tuples([("Apple", "cat"), ("B", "cat"), ("B", "cat")])
150151
expected = DataFrame(index=mi2)
151152
tm.assert_frame_equal(df, expected)
153+
154+
@pytest.mark.parametrize(
155+
"data_result, data_expected",
156+
[
157+
(
158+
[
159+
[(81.0, np.nan), (np.nan, np.nan)],
160+
[(np.nan, np.nan), (82.0, np.nan)],
161+
[1, 2],
162+
[1, 2],
163+
],
164+
[
165+
[(81.0, np.nan), (np.nan, np.nan)],
166+
[(81.0, np.nan), (np.nan, np.nan)],
167+
[1, 2],
168+
[1, 1],
169+
],
170+
),
171+
(
172+
[
173+
[(81.0, np.nan), (np.nan, np.nan)],
174+
[(np.nan, np.nan), (81.0, np.nan)],
175+
[1, 2],
176+
[1, 2],
177+
],
178+
[
179+
[(81.0, np.nan), (np.nan, np.nan)],
180+
[(81.0, np.nan), (np.nan, np.nan)],
181+
[1, 2],
182+
[2, 1],
183+
],
184+
),
185+
],
186+
)
187+
def test_subtracting_two_series_with_unordered_index_and_all_nan_index(
188+
self, data_result, data_expected
189+
):
190+
# GH 38439
191+
a_index_result = MultiIndex.from_tuples(data_result[0])
192+
b_index_result = MultiIndex.from_tuples(data_result[1])
193+
a_series_result = Series(data_result[2], index=a_index_result)
194+
b_series_result = Series(data_result[3], index=b_index_result)
195+
result = a_series_result.align(b_series_result)
196+
197+
a_index_expected = MultiIndex.from_tuples(data_expected[0])
198+
b_index_expected = MultiIndex.from_tuples(data_expected[1])
199+
a_series_expected = Series(data_expected[2], index=a_index_expected)
200+
b_series_expected = Series(data_expected[3], index=b_index_expected)
201+
a_series_expected.index = a_series_expected.index.set_levels(
202+
[
203+
a_series_expected.index.levels[0].astype("float"),
204+
a_series_expected.index.levels[1].astype("float"),
205+
]
206+
)
207+
b_series_expected.index = b_series_expected.index.set_levels(
208+
[
209+
b_series_expected.index.levels[0].astype("float"),
210+
b_series_expected.index.levels[1].astype("float"),
211+
]
212+
)
213+
214+
tm.assert_series_equal(result[0], a_series_expected)
215+
tm.assert_series_equal(result[1], b_series_expected)

0 commit comments

Comments
 (0)