예제 #1
0
    def test_subclassed_wide_to_long(self):
        # GH 9762

        np.random.seed(123)
        x = np.random.randn(3)
        df = tm.SubclassedDataFrame(
            {
                "A1970": {0: "a", 1: "b", 2: "c"},
                "A1980": {0: "d", 1: "e", 2: "f"},
                "B1970": {0: 2.5, 1: 1.2, 2: 0.7},
                "B1980": {0: 3.2, 1: 1.3, 2: 0.1},
                "X": dict(zip(range(3), x)),
            }
        )

        df["id"] = df.index
        exp_data = {
            "X": x.tolist() + x.tolist(),
            "A": ["a", "b", "c", "d", "e", "f"],
            "B": [2.5, 1.2, 0.7, 3.2, 1.3, 0.1],
            "year": [1970, 1970, 1970, 1980, 1980, 1980],
            "id": [0, 1, 2, 0, 1, 2],
        }
        expected = tm.SubclassedDataFrame(exp_data)
        expected = expected.set_index(["id", "year"])[["X", "A", "B"]]
        long_frame = pd.wide_to_long(df, ["A", "B"], i="id", j="year")

        tm.assert_frame_equal(long_frame, expected)
    def test_subclass_stack_multi_mixed(self):
        # GH 15564
        df = tm.SubclassedDataFrame(
            [[10, 11, 12.0, 13.0], [20, 21, 22.0, 23.0], [30, 31, 32.0, 33.0],
             [40, 41, 42.0, 43.0]],
            index=MultiIndex.from_tuples(list(zip(list('AABB'), list('cdcd'))),
                                         names=['aaa', 'ccc']),
            columns=MultiIndex.from_tuples(list(zip(list('WWXX'),
                                                    list('yzyz'))),
                                           names=['www', 'yyy']))

        exp = tm.SubclassedDataFrame(
            [[10, 12.0], [11, 13.0], [20, 22.0], [21, 23.0], [30, 32.0],
             [31, 33.0], [40, 42.0], [41, 43.0]],
            index=MultiIndex.from_tuples(list(
                zip(list('AAAABBBB'), list('ccddccdd'), list('yzyzyzyz'))),
                                         names=['aaa', 'ccc', 'yyy']),
            columns=Index(['W', 'X'], name='www'))

        res = df.stack()
        tm.assert_frame_equal(res, exp)

        res = df.stack('yyy')
        tm.assert_frame_equal(res, exp)

        exp = tm.SubclassedDataFrame(
            [[10.0, 11.0], [12.0, 13.0], [20.0, 21.0], [22.0, 23.0],
             [30.0, 31.0], [32.0, 33.0], [40.0, 41.0], [42.0, 43.0]],
            index=MultiIndex.from_tuples(list(
                zip(list('AAAABBBB'), list('ccddccdd'), list('WXWXWXWX'))),
                                         names=['aaa', 'ccc', 'www']),
            columns=Index(['y', 'z'], name='yyy'))

        res = df.stack('www')
        tm.assert_frame_equal(res, exp)
예제 #3
0
    def test_subclass_align(self):
        # GH 12983
        df1 = tm.SubclassedDataFrame(
            {"a": [1, 3, 5], "b": [1, 3, 5]}, index=list("ACE")
        )
        df2 = tm.SubclassedDataFrame(
            {"c": [1, 2, 4], "d": [1, 2, 4]}, index=list("ABD")
        )

        res1, res2 = df1.align(df2, axis=0)
        exp1 = tm.SubclassedDataFrame(
            {"a": [1, np.nan, 3, np.nan, 5], "b": [1, np.nan, 3, np.nan, 5]},
            index=list("ABCDE"),
        )
        exp2 = tm.SubclassedDataFrame(
            {"c": [1, 2, np.nan, 4, np.nan], "d": [1, 2, np.nan, 4, np.nan]},
            index=list("ABCDE"),
        )
        assert isinstance(res1, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res1, exp1)
        assert isinstance(res2, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res2, exp2)

        res1, res2 = df1.a.align(df2.c)
        assert isinstance(res1, tm.SubclassedSeries)
        tm.assert_series_equal(res1, exp1.a)
        assert isinstance(res2, tm.SubclassedSeries)
        tm.assert_series_equal(res2, exp2.c)
    def test_subclass_unstack_multi_mixed(self):
        # GH 15564
        df = tm.SubclassedDataFrame(
            [[10, 11, 12.0, 13.0], [20, 21, 22.0, 23.0], [30, 31, 32.0, 33.0],
             [40, 41, 42.0, 43.0]],
            index=MultiIndex.from_tuples(list(zip(list('AABB'), list('cdcd'))),
                                         names=['aaa', 'ccc']),
            columns=MultiIndex.from_tuples(list(zip(list('WWXX'),
                                                    list('yzyz'))),
                                           names=['www', 'yyy']))

        exp = tm.SubclassedDataFrame(
            [[10, 20, 11, 21, 12.0, 22.0, 13.0, 23.0],
             [30, 40, 31, 41, 32.0, 42.0, 33.0, 43.0]],
            index=Index(['A', 'B'], name='aaa'),
            columns=MultiIndex.from_tuples(list(
                zip(list('WWWWXXXX'), list('yyzzyyzz'), list('cdcdcdcd'))),
                                           names=['www', 'yyy', 'ccc']))

        res = df.unstack()
        tm.assert_frame_equal(res, exp)

        res = df.unstack('ccc')
        tm.assert_frame_equal(res, exp)

        exp = tm.SubclassedDataFrame(
            [[10, 30, 11, 31, 12.0, 32.0, 13.0, 33.0],
             [20, 40, 21, 41, 22.0, 42.0, 23.0, 43.0]],
            index=Index(['c', 'd'], name='ccc'),
            columns=MultiIndex.from_tuples(list(
                zip(list('WWWWXXXX'), list('yyzzyyzz'), list('ABABABAB'))),
                                           names=['www', 'yyy', 'aaa']))

        res = df.unstack('aaa')
        tm.assert_frame_equal(res, exp)
    def test_subclass_pivot(self):
        # GH 15564
        df = tm.SubclassedDataFrame({
            'index': ['A', 'B', 'C', 'C', 'B', 'A'],
            'columns': ['One', 'One', 'One', 'Two', 'Two', 'Two'],
            'values': [1., 2., 3., 3., 2., 1.]
        })

        pivoted = df.pivot(index='index', columns='columns', values='values')

        expected = tm.SubclassedDataFrame({
            'One': {
                'A': 1.,
                'B': 2.,
                'C': 3.
            },
            'Two': {
                'A': 1.,
                'B': 2.,
                'C': 3.
            }
        })

        expected.index.name, expected.columns.name = 'index', 'columns'

        tm.assert_frame_equal(pivoted, expected)
예제 #6
0
    def test_subclass_pivot(self):
        # GH 15564
        df = tm.SubclassedDataFrame({
            "index": ["A", "B", "C", "C", "B", "A"],
            "columns": ["One", "One", "One", "Two", "Two", "Two"],
            "values": [1.0, 2.0, 3.0, 3.0, 2.0, 1.0],
        })

        pivoted = df.pivot(index="index", columns="columns", values="values")

        expected = tm.SubclassedDataFrame({
            "One": {
                "A": 1.0,
                "B": 2.0,
                "C": 3.0
            },
            "Two": {
                "A": 1.0,
                "B": 2.0,
                "C": 3.0
            },
        })

        expected.index.name, expected.columns.name = "index", "columns"

        tm.assert_frame_equal(pivoted, expected)
예제 #7
0
 def test_comparison_subclassing(self):
     df = tm.SubclassedDataFrame({
         'A': np.random.randn(4),
         'B': np.random.randn(4)
     })
     df2 = tm.SubclassedDataFrame({'A': list('abcd'), 'B': list('dcba')})
     tm.assertIsInstance(df > 0, tm.SubclassedDataFrame)
     tm.assertIsInstance(df2 == 'a', tm.SubclassedDataFrame)
예제 #8
0
    def test_subclass_stack_multi(self):
        # GH 15564
        df = tm.SubclassedDataFrame(
            [[10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33],
             [40, 41, 42, 43]],
            index=MultiIndex.from_tuples(list(zip(list("AABB"), list("cdcd"))),
                                         names=["aaa", "ccc"]),
            columns=MultiIndex.from_tuples(list(zip(list("WWXX"),
                                                    list("yzyz"))),
                                           names=["www", "yyy"]),
        )

        exp = tm.SubclassedDataFrame(
            [
                [10, 12],
                [11, 13],
                [20, 22],
                [21, 23],
                [30, 32],
                [31, 33],
                [40, 42],
                [41, 43],
            ],
            index=MultiIndex.from_tuples(
                list(zip(list("AAAABBBB"), list("ccddccdd"),
                         list("yzyzyzyz"))),
                names=["aaa", "ccc", "yyy"],
            ),
            columns=Index(["W", "X"], name="www"),
        )

        res = df.stack()
        tm.assert_frame_equal(res, exp)

        res = df.stack("yyy")
        tm.assert_frame_equal(res, exp)

        exp = tm.SubclassedDataFrame(
            [
                [10, 11],
                [12, 13],
                [20, 21],
                [22, 23],
                [30, 31],
                [32, 33],
                [40, 41],
                [42, 43],
            ],
            index=MultiIndex.from_tuples(
                list(zip(list("AAAABBBB"), list("ccddccdd"),
                         list("WXWXWXWX"))),
                names=["aaa", "ccc", "www"],
            ),
            columns=Index(["y", "z"], name="yyy"),
        )

        res = df.stack("www")
        tm.assert_frame_equal(res, exp)
    def test_subclassed_apply(self):
        # GH 19822

        def check_row_subclass(row):
            assert isinstance(row, tm.SubclassedSeries)

        def strech(row):
            if row["variable"] == "height":
                row["value"] += 0.5
            return row

        df = tm.SubclassedDataFrame([
            ['John', 'Doe', 'height', 5.5],
            ['Mary', 'Bo', 'height', 6.0],
            ['John', 'Doe', 'weight', 130],
            ['Mary', 'Bo', 'weight', 150]],
            columns=['first', 'last', 'variable', 'value'])

        df.apply(lambda x: check_row_subclass(x))
        df.apply(lambda x: check_row_subclass(x), axis=1)

        expected = tm.SubclassedDataFrame([
            ['John', 'Doe', 'height', 6.0],
            ['Mary', 'Bo', 'height', 6.5],
            ['John', 'Doe', 'weight', 130],
            ['Mary', 'Bo', 'weight', 150]],
            columns=['first', 'last', 'variable', 'value'])

        result = df.apply(lambda x: strech(x), axis=1)
        assert isinstance(result, tm.SubclassedDataFrame)
        tm.assert_frame_equal(result, expected)

        expected = tm.SubclassedDataFrame([
            [1, 2, 3],
            [1, 2, 3],
            [1, 2, 3],
            [1, 2, 3]])

        result = df.apply(lambda x: tm.SubclassedSeries([1, 2, 3]), axis=1)
        assert isinstance(result, tm.SubclassedDataFrame)
        tm.assert_frame_equal(result, expected)

        result = df.apply(lambda x: [1, 2, 3], axis=1, result_type="expand")
        assert isinstance(result, tm.SubclassedDataFrame)
        tm.assert_frame_equal(result, expected)

        expected = tm.SubclassedSeries([
            [1, 2, 3],
            [1, 2, 3],
            [1, 2, 3],
            [1, 2, 3]])

        result = df.apply(lambda x: [1, 2, 3], axis=1)
        assert not isinstance(result, tm.SubclassedDataFrame)
        tm.assert_series_equal(result, expected)
예제 #10
0
    def test_subclassed_apply(self):
        # GH 19822

        def check_row_subclass(row):
            assert isinstance(row, tm.SubclassedSeries)

        def strech(row):
            if row["variable"] == "height":
                row["value"] += 0.5
            return row

        df = tm.SubclassedDataFrame(
            [
                ["John", "Doe", "height", 5.5],
                ["Mary", "Bo", "height", 6.0],
                ["John", "Doe", "weight", 130],
                ["Mary", "Bo", "weight", 150],
            ],
            columns=["first", "last", "variable", "value"],
        )

        df.apply(lambda x: check_row_subclass(x))
        df.apply(lambda x: check_row_subclass(x), axis=1)

        expected = tm.SubclassedDataFrame(
            [
                ["John", "Doe", "height", 6.0],
                ["Mary", "Bo", "height", 6.5],
                ["John", "Doe", "weight", 130],
                ["Mary", "Bo", "weight", 150],
            ],
            columns=["first", "last", "variable", "value"],
        )

        result = df.apply(lambda x: strech(x), axis=1)
        assert isinstance(result, tm.SubclassedDataFrame)
        tm.assert_frame_equal(result, expected)

        expected = tm.SubclassedDataFrame([[1, 2, 3], [1, 2, 3], [1, 2, 3],
                                           [1, 2, 3]])

        result = df.apply(lambda x: tm.SubclassedSeries([1, 2, 3]), axis=1)
        assert isinstance(result, tm.SubclassedDataFrame)
        tm.assert_frame_equal(result, expected)

        result = df.apply(lambda x: [1, 2, 3], axis=1, result_type="expand")
        assert isinstance(result, tm.SubclassedDataFrame)
        tm.assert_frame_equal(result, expected)

        expected = tm.SubclassedSeries([[1, 2, 3], [1, 2, 3], [1, 2, 3],
                                        [1, 2, 3]])

        result = df.apply(lambda x: [1, 2, 3], axis=1)
        assert not isinstance(result, tm.SubclassedDataFrame)
        tm.assert_series_equal(result, expected)
예제 #11
0
    def test_subclass_unstack_multi_mixed(self):
        # GH 15564
        df = tm.SubclassedDataFrame(
            [
                [10, 11, 12.0, 13.0],
                [20, 21, 22.0, 23.0],
                [30, 31, 32.0, 33.0],
                [40, 41, 42.0, 43.0],
            ],
            index=MultiIndex.from_tuples(list(zip(list("AABB"), list("cdcd"))),
                                         names=["aaa", "ccc"]),
            columns=MultiIndex.from_tuples(list(zip(list("WWXX"),
                                                    list("yzyz"))),
                                           names=["www", "yyy"]),
        )

        exp = tm.SubclassedDataFrame(
            [
                [10, 20, 11, 21, 12.0, 22.0, 13.0, 23.0],
                [30, 40, 31, 41, 32.0, 42.0, 33.0, 43.0],
            ],
            index=Index(["A", "B"], name="aaa"),
            columns=MultiIndex.from_tuples(
                list(zip(list("WWWWXXXX"), list("yyzzyyzz"),
                         list("cdcdcdcd"))),
                names=["www", "yyy", "ccc"],
            ),
        )

        res = df.unstack()
        tm.assert_frame_equal(res, exp)

        res = df.unstack("ccc")
        tm.assert_frame_equal(res, exp)

        exp = tm.SubclassedDataFrame(
            [
                [10, 30, 11, 31, 12.0, 32.0, 13.0, 33.0],
                [20, 40, 21, 41, 22.0, 42.0, 23.0, 43.0],
            ],
            index=Index(["c", "d"], name="ccc"),
            columns=MultiIndex.from_tuples(
                list(zip(list("WWWWXXXX"), list("yyzzyyzz"),
                         list("ABABABAB"))),
                names=["www", "yyy", "aaa"],
            ),
        )

        res = df.unstack("aaa")
        tm.assert_frame_equal(res, exp)
예제 #12
0
    def test_subclass_align_combinations(self):
        # GH 12983
        df = tm.SubclassedDataFrame({
            "a": [1, 3, 5],
            "b": [1, 3, 5]
        },
                                    index=list("ACE"))
        s = tm.SubclassedSeries([1, 2, 4], index=list("ABD"), name="x")

        # frame + series
        res1, res2 = df.align(s, axis=0)
        exp1 = pd.DataFrame(
            {
                "a": [1, np.nan, 3, np.nan, 5],
                "b": [1, np.nan, 3, np.nan, 5]
            },
            index=list("ABCDE"),
        )
        # name is lost when
        exp2 = pd.Series([1, 2, np.nan, 4, np.nan],
                         index=list("ABCDE"),
                         name="x")

        assert isinstance(res1, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res1, exp1)
        assert isinstance(res2, tm.SubclassedSeries)
        tm.assert_series_equal(res2, exp2)

        # series + frame
        res1, res2 = s.align(df)
        assert isinstance(res1, tm.SubclassedSeries)
        tm.assert_series_equal(res1, exp2)
        assert isinstance(res2, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res2, exp1)
예제 #13
0
    def test_indexing_sliced(self):
        # GH 11559
        df = tm.SubclassedDataFrame({'X': [1, 2, 3],
                                     'Y': [4, 5, 6],
                                     'Z': [7, 8, 9]},
                                    index=['a', 'b', 'c'])
        res = df.loc[:, 'X']
        exp = tm.SubclassedSeries([1, 2, 3], index=list('abc'), name='X')
        tm.assert_series_equal(res, exp)
        tm.assertIsInstance(res, tm.SubclassedSeries)

        res = df.iloc[:, 1]
        exp = tm.SubclassedSeries([4, 5, 6], index=list('abc'), name='Y')
        tm.assert_series_equal(res, exp)
        tm.assertIsInstance(res, tm.SubclassedSeries)

        res = df.loc[:, 'Z']
        exp = tm.SubclassedSeries([7, 8, 9], index=list('abc'), name='Z')
        tm.assert_series_equal(res, exp)
        tm.assertIsInstance(res, tm.SubclassedSeries)

        res = df.loc['a', :]
        exp = tm.SubclassedSeries([1, 4, 7], index=list('XYZ'), name='a')
        tm.assert_series_equal(res, exp)
        tm.assertIsInstance(res, tm.SubclassedSeries)

        res = df.iloc[1, :]
        exp = tm.SubclassedSeries([2, 5, 8], index=list('XYZ'), name='b')
        tm.assert_series_equal(res, exp)
        tm.assertIsInstance(res, tm.SubclassedSeries)

        res = df.loc['c', :]
        exp = tm.SubclassedSeries([3, 6, 9], index=list('XYZ'), name='c')
        tm.assert_series_equal(res, exp)
        tm.assertIsInstance(res, tm.SubclassedSeries)
예제 #14
0
    def test_subclass_align_combinations(self):
        # GH 12983
        df = tm.SubclassedDataFrame({
            'a': [1, 3, 5],
            'b': [1, 3, 5]
        },
                                    index=list('ACE'))
        s = tm.SubclassedSeries([1, 2, 4], index=list('ABD'), name='x')

        # frame + series
        res1, res2 = df.align(s, axis=0)
        exp1 = pd.DataFrame(
            {
                'a': [1, np.nan, 3, np.nan, 5],
                'b': [1, np.nan, 3, np.nan, 5]
            },
            index=list('ABCDE'))
        # name is lost when
        exp2 = pd.Series([1, 2, np.nan, 4, np.nan],
                         index=list('ABCDE'),
                         name='x')

        tm.assertIsInstance(res1, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res1, exp1)
        tm.assertIsInstance(res2, tm.SubclassedSeries)
        tm.assert_series_equal(res2, exp2)

        # series + frame
        res1, res2 = s.align(df)
        tm.assertIsInstance(res1, tm.SubclassedSeries)
        tm.assert_series_equal(res1, exp2)
        tm.assertIsInstance(res2, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res2, exp1)
예제 #15
0
    def test_indexing_sliced(self):
        # GH 11559
        df = tm.SubclassedDataFrame(
            {"X": [1, 2, 3], "Y": [4, 5, 6], "Z": [7, 8, 9]}, index=["a", "b", "c"]
        )
        res = df.loc[:, "X"]
        exp = tm.SubclassedSeries([1, 2, 3], index=list("abc"), name="X")
        tm.assert_series_equal(res, exp)
        assert isinstance(res, tm.SubclassedSeries)

        res = df.iloc[:, 1]
        exp = tm.SubclassedSeries([4, 5, 6], index=list("abc"), name="Y")
        tm.assert_series_equal(res, exp)
        assert isinstance(res, tm.SubclassedSeries)

        res = df.loc[:, "Z"]
        exp = tm.SubclassedSeries([7, 8, 9], index=list("abc"), name="Z")
        tm.assert_series_equal(res, exp)
        assert isinstance(res, tm.SubclassedSeries)

        res = df.loc["a", :]
        exp = tm.SubclassedSeries([1, 4, 7], index=list("XYZ"), name="a")
        tm.assert_series_equal(res, exp)
        assert isinstance(res, tm.SubclassedSeries)

        res = df.iloc[1, :]
        exp = tm.SubclassedSeries([2, 5, 8], index=list("XYZ"), name="b")
        tm.assert_series_equal(res, exp)
        assert isinstance(res, tm.SubclassedSeries)

        res = df.loc["c", :]
        exp = tm.SubclassedSeries([3, 6, 9], index=list("XYZ"), name="c")
        tm.assert_series_equal(res, exp)
        assert isinstance(res, tm.SubclassedSeries)
예제 #16
0
    def test_subclass_unstack(self):
        # GH 15564
        s = tm.SubclassedSeries([1, 2, 3, 4], index=[list("aabb"), list("xyxy")])

        res = s.unstack()
        exp = tm.SubclassedDataFrame({"x": [1, 3], "y": [2, 4]}, index=["a", "b"])

        tm.assert_frame_equal(res, exp)
    def test_subclassed_melt(self):
        # GH 15564
        cheese = tm.SubclassedDataFrame({
            'first': ['John', 'Mary'],
            'last': ['Doe', 'Bo'],
            'height': [5.5, 6.0],
            'weight': [130, 150]
        })

        melted = pd.melt(cheese, id_vars=['first', 'last'])

        expected = tm.SubclassedDataFrame(
            [['John', 'Doe', 'height', 5.5], ['Mary', 'Bo', 'height', 6.0],
             ['John', 'Doe', 'weight', 130], ['Mary', 'Bo', 'weight', 150]],
            columns=['first', 'last', 'variable', 'value'])

        tm.assert_frame_equal(melted, expected)
예제 #18
0
 def test_fillna_subclassing(self):
     df = tm.SubclassedDataFrame(
         {
             'a': [np.nan, 1, 2, np.nan, np.nan],
             'b': ['1', '2', '3', None, None],
             'c': [None, '1', '2', '3', '4']
         },
         index=list('VWXYZ'))
     tm.assertIsInstance(df.fillna(0), tm.SubclassedDataFrame)
예제 #19
0
    def test_subclass_unstack(self):
        # GH 15564
        s = tm.SubclassedSeries(
            [1, 2, 3, 4], index=[list('aabb'), list('xyxy')])

        res = s.unstack()
        exp = tm.SubclassedDataFrame(
            {'x': [1, 3], 'y': [2, 4]}, index=['a', 'b'])

        tm.assert_frame_equal(res, exp)
    def test_subclass_unstack(self):
        # GH 15564
        df = tm.SubclassedDataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]],
                                    index=['a', 'b', 'c'],
                                    columns=['X', 'Y', 'Z'])

        res = df.unstack()
        exp = tm.SubclassedSeries([1, 4, 7, 2, 5, 8, 3, 6, 9],
                                  index=[list('XXXYYYZZZ'),
                                         list('abcabcabc')])

        tm.assert_series_equal(res, exp)
    def test_subclass_stack(self):
        # GH 15564
        df = tm.SubclassedDataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]],
                                    index=['a', 'b', 'c'],
                                    columns=['X', 'Y', 'Z'])

        res = df.stack()
        exp = tm.SubclassedSeries([1, 2, 3, 4, 5, 6, 7, 8, 9],
                                  index=[list('aaabbbccc'),
                                         list('XYZXYZXYZ')])

        tm.assert_series_equal(res, exp)
예제 #22
0
    def test_subclassed_melt(self):
        # GH 15564
        cheese = tm.SubclassedDataFrame({
            "first": ["John", "Mary"],
            "last": ["Doe", "Bo"],
            "height": [5.5, 6.0],
            "weight": [130, 150],
        })

        melted = pd.melt(cheese, id_vars=["first", "last"])

        expected = tm.SubclassedDataFrame(
            [
                ["John", "Doe", "height", 5.5],
                ["Mary", "Bo", "height", 6.0],
                ["John", "Doe", "weight", 130],
                ["Mary", "Bo", "weight", 150],
            ],
            columns=["first", "last", "variable", "value"],
        )

        tm.assert_frame_equal(melted, expected)
예제 #23
0
    def test_subclass_stack(self):
        # GH 15564
        df = tm.SubclassedDataFrame(
            [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
            index=["a", "b", "c"],
            columns=["X", "Y", "Z"],
        )

        res = df.stack()
        exp = tm.SubclassedSeries([1, 2, 3, 4, 5, 6, 7, 8, 9],
                                  index=[list("aaabbbccc"),
                                         list("XYZXYZXYZ")])

        tm.assert_series_equal(res, exp)
예제 #24
0
    def test_subclass_unstack(self):
        # GH 15564
        df = tm.SubclassedDataFrame(
            [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
            index=["a", "b", "c"],
            columns=["X", "Y", "Z"],
        )

        res = df.unstack()
        exp = tm.SubclassedSeries([1, 4, 7, 2, 5, 8, 3, 6, 9],
                                  index=[list("XXXYYYZZZ"),
                                         list("abcabcabc")])

        tm.assert_series_equal(res, exp)
예제 #25
0
    def test_subclass_align(self):
        # GH 12983
        df1 = tm.SubclassedDataFrame({
            'a': [1, 3, 5],
            'b': [1, 3, 5]
        },
                                     index=list('ACE'))
        df2 = tm.SubclassedDataFrame({
            'c': [1, 2, 4],
            'd': [1, 2, 4]
        },
                                     index=list('ABD'))

        res1, res2 = df1.align(df2, axis=0)
        exp1 = tm.SubclassedDataFrame(
            {
                'a': [1, np.nan, 3, np.nan, 5],
                'b': [1, np.nan, 3, np.nan, 5]
            },
            index=list('ABCDE'))
        exp2 = tm.SubclassedDataFrame(
            {
                'c': [1, 2, np.nan, 4, np.nan],
                'd': [1, 2, np.nan, 4, np.nan]
            },
            index=list('ABCDE'))
        tm.assertIsInstance(res1, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res1, exp1)
        tm.assertIsInstance(res2, tm.SubclassedDataFrame)
        tm.assert_frame_equal(res2, exp2)

        res1, res2 = df1.a.align(df2.c)
        tm.assertIsInstance(res1, tm.SubclassedSeries)
        tm.assert_series_equal(res1, exp1.a)
        tm.assertIsInstance(res2, tm.SubclassedSeries)
        tm.assert_series_equal(res2, exp2.c)
예제 #26
0
    def test_dataframe_metadata(self):
        df = tm.SubclassedDataFrame({'X': [1, 2, 3], 'Y': [1, 2, 3]},
                                    index=['a', 'b', 'c'])
        df.testattr = 'XXX'

        self.assertEqual(df.testattr, 'XXX')
        self.assertEqual(df[['X']].testattr, 'XXX')
        self.assertEqual(df.loc[['a', 'b'], :].testattr, 'XXX')
        self.assertEqual(df.iloc[[0, 1], :].testattr, 'XXX')

        # GH9776
        self.assertEqual(df.iloc[0:1, :].testattr, 'XXX')

        # GH10553
        unpickled = self.round_trip_pickle(df)
        tm.assert_frame_equal(df, unpickled)
        self.assertEqual(df._metadata, unpickled._metadata)
        self.assertEqual(df.testattr, unpickled.testattr)
예제 #27
0
    def test_dataframe_metadata(self):
        df = tm.SubclassedDataFrame({'X': [1, 2, 3], 'Y': [1, 2, 3]},
                                    index=['a', 'b', 'c'])
        df.testattr = 'XXX'

        assert df.testattr == 'XXX'
        assert df[['X']].testattr == 'XXX'
        assert df.loc[['a', 'b'], :].testattr == 'XXX'
        assert df.iloc[[0, 1], :].testattr == 'XXX'

        # see gh-9776
        assert df.iloc[0:1, :].testattr == 'XXX'

        # see gh-10553
        unpickled = tm.round_trip_pickle(df)
        tm.assert_frame_equal(df, unpickled)
        assert df._metadata == unpickled._metadata
        assert df.testattr == unpickled.testattr
예제 #28
0
    def test_dataframe_metadata(self):
        df = tm.SubclassedDataFrame(
            {"X": [1, 2, 3], "Y": [1, 2, 3]}, index=["a", "b", "c"]
        )
        df.testattr = "XXX"

        assert df.testattr == "XXX"
        assert df[["X"]].testattr == "XXX"
        assert df.loc[["a", "b"], :].testattr == "XXX"
        assert df.iloc[[0, 1], :].testattr == "XXX"

        # see gh-9776
        assert df.iloc[0:1, :].testattr == "XXX"

        # see gh-10553
        unpickled = tm.round_trip_pickle(df)
        tm.assert_frame_equal(df, unpickled)
        assert df._metadata == unpickled._metadata
        assert df.testattr == unpickled.testattr
예제 #29
0
 def test_to_frame(self):
     s = tm.SubclassedSeries([1, 2, 3, 4], index=list("abcd"), name="xxx")
     res = s.to_frame()
     exp = tm.SubclassedDataFrame({"xxx": [1, 2, 3, 4]}, index=list("abcd"))
     tm.assert_frame_equal(res, exp)
 def test_to_frame(self):
     s = tm.SubclassedSeries([1, 2, 3, 4], index=list('abcd'), name='xxx')
     res = s.to_frame()
     exp = tm.SubclassedDataFrame({'xxx': [1, 2, 3, 4]}, index=list('abcd'))
     tm.assert_frame_equal(res, exp)