Skip to content

Commit ec14701

Browse files
committed
ENH: treat complex number in maybe_convert_objects
1 parent 6d7dbc9 commit ec14701

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

pandas/src/inference.pyx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -234,31 +234,37 @@ def maybe_convert_numeric(ndarray[object] values, set na_values):
234234
cdef:
235235
Py_ssize_t i, n
236236
ndarray[float64_t] floats
237+
ndarray[complex64_t] complexes
237238
ndarray[int64_t] ints
238239
bint seen_float = 0
240+
bint seen_complex = 0
239241
object val
240242
float64_t fval
241243

242244
n = len(values)
243245

244246
floats = np.empty(n, dtype='f8')
247+
complexes = np.empty(n, dtype='c8')
245248
ints = np.empty(n, dtype='i8')
246249

247250
for i from 0 <= i < n:
248251
val = values[i]
249252

250253
if util.is_float_object(val):
251-
floats[i] = val
254+
floats[i] = complexes[i] = val
252255
seen_float = 1
253256
elif val in na_values:
254-
floats[i] = nan
257+
floats[i] = complexes[i] = nan
255258
seen_float = 1
256259
elif val is None:
257-
floats[i] = nan
260+
floats[i] = complexes[i] = nan
258261
seen_float = 1
259262
elif len(val) == 0:
260-
floats[i] = nan
263+
floats[i] = complexes[i] = nan
261264
seen_float = 1
265+
elif util.is_complex_object(val):
266+
complexes[i] = val
267+
seen_complex = 1
262268
else:
263269
fval = util.floatify(val)
264270
floats[i] = fval
@@ -268,7 +274,9 @@ def maybe_convert_numeric(ndarray[object] values, set na_values):
268274
else:
269275
ints[i] = <int64_t> fval
270276

271-
if seen_float:
277+
if seen_complex:
278+
return complexes
279+
elif seen_float:
272280
return floats
273281
else:
274282
return ints

0 commit comments

Comments
 (0)