Esempio n. 1
0
    def _assert_replace_conversion(self, from_key, to_key, how):
        index = pd.Index([3, 4], name="xxx")
        s = pd.Series(self.rep[from_key], index=index, name="yyy")
        self.assertEqual(s.dtype, from_key)

        if how == "dict":
            replacer = dict(zip(self.rep[from_key], self.rep[to_key]))
        elif how == "series":
            replacer = pd.Series(self.rep[to_key], index=self.rep[from_key])
        else:
            raise ValueError

        result = s.replace(replacer)

        if (
            (from_key == "float64" and to_key in ("bool", "int64"))
            or (from_key == "complex128" and to_key in ("bool", "int64", "float64"))
            or (from_key == "int64" and to_key in ("bool"))
            or
            # TODO_GH12747 The result must be int?
            (from_key == "bool" and to_key in ("int64"))
        ):

            # buggy on 32-bit
            if tm.is_platform_32bit():
                raise nose.SkipTest("32-bit platform buggy: {0} -> {1}".format(from_key, to_key))

            # Expected: do not downcast by replacement
            exp = pd.Series(self.rep[to_key], index=index, name="yyy", dtype=from_key)

        else:
            exp = pd.Series(self.rep[to_key], index=index, name="yyy")
            self.assertEqual(exp.dtype, to_key)

        tm.assert_series_equal(result, exp)
Esempio n. 2
0
    def _assert_replace_conversion(self, from_key, to_key, how):
        index = pd.Index([3, 4], name='xxx')
        obj = pd.Series(self.rep[from_key], index=index, name='yyy')
        self.assertEqual(obj.dtype, from_key)

        if how == 'dict':
            replacer = dict(zip(self.rep[from_key], self.rep[to_key]))
        elif how == 'series':
            replacer = pd.Series(self.rep[to_key], index=self.rep[from_key])
        else:
            raise ValueError

        result = obj.replace(replacer)

        # buggy on windows for bool/int64
        if (from_key == 'bool' and
                to_key == 'int64' and
                tm.is_platform_windows()):
            raise nose.SkipTest("windows platform buggy: {0} -> {1}".format
                                (from_key, to_key))

        if ((from_key == 'float64' and
             to_key in ('bool', 'int64')) or

            (from_key == 'complex128' and
             to_key in ('bool', 'int64', 'float64')) or

            (from_key == 'int64' and
             to_key in ('bool')) or

            # TODO_GH12747 The result must be int?
                (from_key == 'bool' and to_key == 'int64')):

            # buggy on 32-bit
            if tm.is_platform_32bit():
                raise nose.SkipTest("32-bit platform buggy: {0} -> {1}".format
                                    (from_key, to_key))

            # Expected: do not downcast by replacement
            exp = pd.Series(self.rep[to_key], index=index,
                            name='yyy', dtype=from_key)

        else:
            exp = pd.Series(self.rep[to_key], index=index, name='yyy')
            self.assertEqual(exp.dtype, to_key)

        tm.assert_series_equal(result, exp)
Esempio n. 3
0
    def _assert_replace_conversion(self, from_key, to_key, how):
        index = pd.Index([3, 4], name='xxx')
        obj = pd.Series(self.rep[from_key], index=index, name='yyy')
        self.assertEqual(obj.dtype, from_key)

        if (from_key.startswith('datetime') and to_key.startswith('datetime')):
            # different tz, currently mask_missing raises SystemError
            return

        if how == 'dict':
            replacer = dict(zip(self.rep[from_key], self.rep[to_key]))
        elif how == 'series':
            replacer = pd.Series(self.rep[to_key], index=self.rep[from_key])
        else:
            raise ValueError

        result = obj.replace(replacer)

        if ((from_key == 'float64' and to_key in ('int64')) or
            (from_key == 'complex128' and to_key in ('int64', 'float64'))):

            # buggy on 32-bit
            if tm.is_platform_32bit():
                pytest.skip("32-bit platform buggy: {0} -> {1}".format(
                    from_key, to_key))

            # Expected: do not downcast by replacement
            exp = pd.Series(self.rep[to_key],
                            index=index,
                            name='yyy',
                            dtype=from_key)

        else:
            exp = pd.Series(self.rep[to_key], index=index, name='yyy')
            self.assertEqual(exp.dtype, to_key)

        tm.assert_series_equal(result, exp)
Esempio n. 4
0
    def _assert_replace_conversion(self, from_key, to_key, how):
        index = pd.Index([3, 4], name='xxx')
        obj = pd.Series(self.rep[from_key], index=index, name='yyy')
        self.assertEqual(obj.dtype, from_key)

        if (from_key.startswith('datetime') and to_key.startswith('datetime')):
            # different tz, currently mask_missing raises SystemError
            return

        if how == 'dict':
            replacer = dict(zip(self.rep[from_key], self.rep[to_key]))
        elif how == 'series':
            replacer = pd.Series(self.rep[to_key], index=self.rep[from_key])
        else:
            raise ValueError

        result = obj.replace(replacer)

        if ((from_key == 'float64' and to_key in ('int64')) or
            (from_key == 'complex128' and
             to_key in ('int64', 'float64'))):

            # buggy on 32-bit
            if tm.is_platform_32bit():
                pytest.skip("32-bit platform buggy: {0} -> {1}".format
                            (from_key, to_key))

            # Expected: do not downcast by replacement
            exp = pd.Series(self.rep[to_key], index=index,
                            name='yyy', dtype=from_key)

        else:
            exp = pd.Series(self.rep[to_key], index=index, name='yyy')
            self.assertEqual(exp.dtype, to_key)

        tm.assert_series_equal(result, exp)