(self)
| 2317 | assert_identical(actual, expected) |
| 2318 | |
| 2319 | def test_reindex(self) -> None: |
| 2320 | data = create_test_data() |
| 2321 | assert_identical(data, data.reindex()) |
| 2322 | |
| 2323 | expected = data.assign_coords(dim1=data["dim1"]) |
| 2324 | actual = data.reindex(dim1=data["dim1"]) |
| 2325 | assert_identical(actual, expected) |
| 2326 | |
| 2327 | actual = data.reindex(dim1=data["dim1"].values) |
| 2328 | assert_identical(actual, expected) |
| 2329 | |
| 2330 | actual = data.reindex(dim1=data["dim1"].to_index()) |
| 2331 | assert_identical(actual, expected) |
| 2332 | |
| 2333 | with pytest.raises( |
| 2334 | ValueError, match=r"cannot reindex or align along dimension" |
| 2335 | ): |
| 2336 | data.reindex(dim1=data["dim1"][:5]) |
| 2337 | |
| 2338 | expected = data.isel(dim2=slice(5)) |
| 2339 | actual = data.reindex(dim2=data["dim2"][:5]) |
| 2340 | assert_identical(actual, expected) |
| 2341 | |
| 2342 | # test dict-like argument |
| 2343 | actual = data.reindex({"dim2": data["dim2"]}) |
| 2344 | expected = data |
| 2345 | assert_identical(actual, expected) |
| 2346 | with pytest.raises(ValueError, match=r"cannot specify both"): |
| 2347 | data.reindex({"x": 0}, x=0) |
| 2348 | with pytest.raises(ValueError, match=r"dictionary"): |
| 2349 | data.reindex("foo") # type: ignore[arg-type] |
| 2350 | |
| 2351 | # invalid dimension |
| 2352 | # TODO: (benbovy - explicit indexes): uncomment? |
| 2353 | # --> from reindex docstrings: "any mismatched dimension is simply ignored" |
| 2354 | # with pytest.raises(ValueError, match=r"indexer keys.*not correspond.*"): |
| 2355 | # data.reindex(invalid=0) |
| 2356 | |
| 2357 | # out of order |
| 2358 | expected = data.sel(dim2=data["dim2"][:5:-1]) |
| 2359 | actual = data.reindex(dim2=data["dim2"][:5:-1]) |
| 2360 | assert_identical(actual, expected) |
| 2361 | |
| 2362 | # multiple fill values |
| 2363 | expected = data.reindex(dim2=[0.1, 2.1, 3.1, 4.1]).assign( |
| 2364 | var1=lambda ds: ds.var1.copy(data=[[-10, -10, -10, -10]] * len(ds.dim1)), |
| 2365 | var2=lambda ds: ds.var2.copy(data=[[-20, -20, -20, -20]] * len(ds.dim1)), |
| 2366 | ) |
| 2367 | actual = data.reindex( |
| 2368 | dim2=[0.1, 2.1, 3.1, 4.1], fill_value={"var1": -10, "var2": -20} |
| 2369 | ) |
| 2370 | assert_identical(actual, expected) |
| 2371 | # use the default value |
| 2372 | expected = data.reindex(dim2=[0.1, 2.1, 3.1, 4.1]).assign( |
| 2373 | var1=lambda ds: ds.var1.copy(data=[[-10, -10, -10, -10]] * len(ds.dim1)), |
| 2374 | var2=lambda ds: ds.var2.copy( |
| 2375 | data=[[np.nan, np.nan, np.nan, np.nan]] * len(ds.dim1) |
| 2376 | ), |
nothing calls this directly
no test coverage detected