Esempio n. 1
0
    def test_from_variables(self) -> None:
        v_level1 = xr.Variable("x", [1, 2, 3],
                               attrs={"unit": "m"},
                               encoding={"dtype": np.int32})
        v_level2 = xr.Variable("x", ["a", "b", "c"],
                               attrs={"unit": "m"},
                               encoding={"dtype": "U"})

        index = PandasMultiIndex.from_variables({
            "level1": v_level1,
            "level2": v_level2
        })

        expected_idx = pd.MultiIndex.from_arrays(
            [v_level1.data, v_level2.data])
        assert index.dim == "x"
        assert index.index.equals(expected_idx)
        assert index.index.name == "x"
        assert index.index.names == ["level1", "level2"]

        var = xr.Variable(("x", "y"), [[1, 2, 3], [4, 5, 6]])
        with pytest.raises(ValueError,
                           match=r".*only accepts 1-dimensional variables.*"):
            PandasMultiIndex.from_variables({"var": var})

        v_level3 = xr.Variable("y", [4, 5, 6])
        with pytest.raises(
                ValueError,
                match=r"unmatched dimensions for multi-index variables.*"):
            PandasMultiIndex.from_variables({
                "level1": v_level1,
                "level3": v_level3
            })
Esempio n. 2
0
    def test_from_variables(self):
        v_level1 = xr.Variable("x", [1, 2, 3],
                               attrs={"unit": "m"},
                               encoding={"dtype": np.int32})
        v_level2 = xr.Variable("x", ["a", "b", "c"],
                               attrs={"unit": "m"},
                               encoding={"dtype": "U"})

        index, index_vars = PandasMultiIndex.from_variables({
            "level1": v_level1,
            "level2": v_level2
        })

        expected_idx = pd.MultiIndex.from_arrays(
            [v_level1.data, v_level2.data])
        assert index.dim == "x"
        assert index.index.equals(expected_idx)

        assert list(index_vars) == ["x", "level1", "level2"]
        xr.testing.assert_equal(xr.IndexVariable("x", expected_idx),
                                index_vars["x"])
        xr.testing.assert_identical(v_level1.to_index_variable(),
                                    index_vars["level1"])
        xr.testing.assert_identical(v_level2.to_index_variable(),
                                    index_vars["level2"])

        var = xr.Variable(("x", "y"), [[1, 2, 3], [4, 5, 6]])
        with pytest.raises(ValueError,
                           match=r".*only accepts 1-dimensional variables.*"):
            PandasMultiIndex.from_variables({"var": var})

        v_level3 = xr.Variable("y", [4, 5, 6])
        with pytest.raises(ValueError,
                           match=r"unmatched dimensions for variables.*"):
            PandasMultiIndex.from_variables({
                "level1": v_level1,
                "level3": v_level3
            })