MCPcopy Index your code
hub / github.com/pydata/xarray / test_selection_multiindex

Method test_selection_multiindex

xarray/tests/test_dataset.py:2217–2261  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2215 data.loc["a"] # type: ignore[index]
2216
2217 def test_selection_multiindex(self) -> None:
2218 midx = pd.MultiIndex.from_product(
2219 [["a", "b"], [1, 2], [-1, -2]], names=("one", "two", "three")
2220 )
2221 midx_coords = Coordinates.from_pandas_multiindex(midx, "x")
2222 mdata = Dataset(data_vars={"var": ("x", range(8))}, coords=midx_coords)
2223
2224 def test_sel(
2225 lab_indexer, pos_indexer, replaced_idx=False, renamed_dim=None
2226 ) -> None:
2227 ds = mdata.sel(x=lab_indexer)
2228 expected_ds = mdata.isel(x=pos_indexer)
2229 if not replaced_idx:
2230 assert_identical(ds, expected_ds)
2231 else:
2232 if renamed_dim:
2233 assert ds["var"].dims[0] == renamed_dim
2234 ds = ds.rename({renamed_dim: "x"})
2235 assert_identical(ds["var"].variable, expected_ds["var"].variable)
2236 assert not ds["x"].equals(expected_ds["x"])
2237
2238 test_sel(("a", 1, -1), 0)
2239 test_sel(("b", 2, -2), -1)
2240 test_sel(("a", 1), [0, 1], replaced_idx=True, renamed_dim="three")
2241 test_sel(("a",), range(4), replaced_idx=True)
2242 test_sel("a", range(4), replaced_idx=True)
2243 test_sel([("a", 1, -1), ("b", 2, -2)], [0, 7])
2244 test_sel(slice("a", "b"), range(8))
2245 test_sel(slice(("a", 1), ("b", 1)), range(6))
2246 test_sel({"one": "a", "two": 1, "three": -1}, 0)
2247 test_sel({"one": "a", "two": 1}, [0, 1], replaced_idx=True, renamed_dim="three")
2248 test_sel({"one": "a"}, range(4), replaced_idx=True)
2249
2250 assert_identical(mdata.loc[{"x": {"one": "a"}}], mdata.sel(x={"one": "a"}))
2251 assert_identical(mdata.loc[{"x": "a"}], mdata.sel(x="a"))
2252 assert_identical(mdata.loc[{"x": ("a", 1)}], mdata.sel(x=("a", 1)))
2253 assert_identical(mdata.loc[{"x": ("a", 1, -1)}], mdata.sel(x=("a", 1, -1)))
2254
2255 assert_identical(mdata.sel(x={"one": "a", "two": 1}), mdata.sel(one="a", two=1))
2256
2257 # GH10534: slicing on multi-index levels should raise
2258 with pytest.raises(ValueError, match="slice-based selection on multi-index"):
2259 mdata.sel(one=slice("a", "b"))
2260 with pytest.raises(ValueError, match="slice-based selection on multi-index"):
2261 mdata.sel(two=slice(1, 2))
2262
2263 def test_broadcast_like(self) -> None:
2264 original1 = DataArray(

Callers

nothing calls this directly

Calls 4

selMethod · 0.95
DatasetClass · 0.90
assert_identicalFunction · 0.90

Tested by

no test coverage detected