From 301b21f4972ad4540e83fa08d43f70bcc2a93206 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Thu, 18 Apr 2019 11:52:53 -0700 Subject: [PATCH 1/2] Removed astype_unicode --- pandas/_libs/lib.pyx | 35 ----------------------------------- pandas/core/dtypes/cast.py | 4 ---- 2 files changed, 39 deletions(-) diff --git a/pandas/_libs/lib.pyx b/pandas/_libs/lib.pyx index 1fd72cf763e6b..b34b376213563 100644 --- a/pandas/_libs/lib.pyx +++ b/pandas/_libs/lib.pyx @@ -549,41 +549,6 @@ def astype_intsafe(ndarray[object] arr, new_dtype): return result -@cython.wraparound(False) -@cython.boundscheck(False) -def astype_unicode(arr: ndarray, skipna: bool=False) -> ndarray[object]: - """ - Convert all elements in an array to unicode. - - Parameters - ---------- - arr : ndarray - The array whose elements we are casting. - skipna : bool, default False - Whether or not to coerce nulls to their stringified form - (e.g. NaN becomes 'nan'). - - Returns - ------- - casted_arr : ndarray - A new array with the input array's elements casted. - """ - cdef: - object arr_i - Py_ssize_t i, n = arr.size - ndarray[object] result = np.empty(n, dtype=object) - - for i in range(n): - arr_i = arr[i] - - if not (skipna and checknull(arr_i)): - arr_i = unicode(arr_i) - - result[i] = arr_i - - return result - - @cython.wraparound(False) @cython.boundscheck(False) def astype_str(arr: ndarray, skipna: bool=False) -> ndarray[object]: diff --git a/pandas/core/dtypes/cast.py b/pandas/core/dtypes/cast.py index a2509226bcd8e..adaddf844ea9c 100644 --- a/pandas/core/dtypes/cast.py +++ b/pandas/core/dtypes/cast.py @@ -636,10 +636,6 @@ def astype_nansafe(arr, dtype, copy=True, skipna=False): dtype = pandas_dtype(dtype) if issubclass(dtype.type, str): - return lib.astype_unicode(arr.ravel(), - skipna=skipna).reshape(arr.shape) - - elif issubclass(dtype.type, str): return lib.astype_str(arr.ravel(), skipna=skipna).reshape(arr.shape) From 0960a365a9b540caf0ed3c258f34e808845a5a8d Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Thu, 18 Apr 2019 11:54:58 -0700 Subject: [PATCH 2/2] Removed UnicodeValidator and methods --- pandas/_libs/lib.pyx | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/pandas/_libs/lib.pyx b/pandas/_libs/lib.pyx index b34b376213563..d80cc482be5b3 100644 --- a/pandas/_libs/lib.pyx +++ b/pandas/_libs/lib.pyx @@ -1286,10 +1286,6 @@ def infer_dtype(value: object, skipna: object=None) -> str: if is_string_array(values, skipna=skipna): return 'string' - elif isinstance(val, unicode): - if is_unicode_array(values, skipna=skipna): - return 'unicode' - elif isinstance(val, bytes): if is_bytes_array(values, skipna=skipna): return 'bytes' @@ -1561,22 +1557,6 @@ cpdef bint is_string_array(ndarray values, bint skipna=False): return validator.validate(values) -cdef class UnicodeValidator(Validator): - cdef inline bint is_value_typed(self, object value) except -1: - return isinstance(value, unicode) - - cdef inline bint is_array_typed(self) except -1: - return issubclass(self.dtype.type, np.unicode_) - - -cdef bint is_unicode_array(ndarray values, bint skipna=False): - cdef: - UnicodeValidator validator = UnicodeValidator(len(values), - values.dtype, - skipna=skipna) - return validator.validate(values) - - cdef class BytesValidator(Validator): cdef inline bint is_value_typed(self, object value) except -1: return isinstance(value, bytes)