Skip to content

Commit 8489c60

Browse files
committed
fix conversion
1 parent 7a05f16 commit 8489c60

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

pandas/_libs/lib.pyx

+14-10
Original file line numberDiff line numberDiff line change
@@ -651,29 +651,33 @@ cpdef ndarray[object] ensure_string_array(
651651
cdef:
652652
Py_ssize_t i = 0, n = len(arr)
653653

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+
654661
result = np.asarray(arr, dtype="object")
655662

656663
if copy and result is arr:
657664
result = result.copy()
658665

659-
arr = np.asarray(arr) # PERF: need a numpy array to ensure fast access
660-
661666
for i in range(n):
662-
arr_val = arr[i]
663-
res_val = result[i]
667+
val = arr[i]
664668

665-
if not checknull(res_val) and isinstance(arr_val, str):
669+
if isinstance(val, str):
666670
continue
667671

668-
if not checknull(res_val):
669-
result[i] = str(arr_val)
672+
if not checknull(val):
673+
result[i] = str(val)
670674
else:
671675
if convert_na_value:
672-
arr_val = na_value
676+
val = na_value
673677
if skipna:
674-
result[i] = arr_val
678+
result[i] = val
675679
else:
676-
result[i] = str(arr_val)
680+
result[i] = str(val)
677681

678682
return result
679683

0 commit comments

Comments
 (0)