|
1 | 1 | import numpy as np
|
| 2 | +import pytest |
2 | 3 |
|
3 | 4 | import pandas._libs.index as _index
|
4 | 5 | from pandas.errors import PerformanceWarning
|
@@ -149,3 +150,66 @@ def test_rename_multiindex_with_duplicates(self):
|
149 | 150 | mi2 = MultiIndex.from_tuples([("Apple", "cat"), ("B", "cat"), ("B", "cat")])
|
150 | 151 | expected = DataFrame(index=mi2)
|
151 | 152 | 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