File tree 1 file changed +14
-10
lines changed
1 file changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -651,29 +651,33 @@ cpdef ndarray[object] ensure_string_array(
651
651
cdef:
652
652
Py_ssize_t i = 0 , n = len (arr)
653
653
654
+ from pandas.core.dtypes.common import is_extension_array_dtype
655
+
656
+ if is_extension_array_dtype(arr):
657
+ arr = arr.to_numpy()
658
+ elif not isinstance (arr, np.ndarray):
659
+ arr = np.array(arr, dtype = object )
660
+
654
661
result = np.asarray(arr, dtype = " object" )
655
662
656
663
if copy and result is arr:
657
664
result = result.copy()
658
665
659
- arr = np.asarray(arr) # PERF: need a numpy array to ensure fast access
660
-
661
666
for i in range (n):
662
- arr_val = arr[i]
663
- res_val = result[i]
667
+ val = arr[i]
664
668
665
- if not checknull(res_val) and isinstance (arr_val , str ):
669
+ if isinstance (val , str ):
666
670
continue
667
671
668
- if not checknull(res_val ):
669
- result[i] = str (arr_val )
672
+ if not checknull(val ):
673
+ result[i] = str (val )
670
674
else :
671
675
if convert_na_value:
672
- arr_val = na_value
676
+ val = na_value
673
677
if skipna:
674
- result[i] = arr_val
678
+ result[i] = val
675
679
else :
676
- result[i] = str (arr_val )
680
+ result[i] = str (val )
677
681
678
682
return result
679
683
You can’t perform that action at this time.
0 commit comments