@@ -1265,7 +1265,10 @@ def infer_dtype(value: object, skipna: object=None) -> str:
1265
1265
if is_integer_array(values):
1266
1266
return ' integer'
1267
1267
elif is_integer_float_array(values):
1268
- return ' mixed-integer-float'
1268
+ if is_integer_na_array(values):
1269
+ return ' integer-na'
1270
+ else :
1271
+ return ' mixed-integer-float'
1269
1272
return ' mixed-integer'
1270
1273
1271
1274
elif PyDateTime_Check(val):
@@ -1290,7 +1293,10 @@ def infer_dtype(value: object, skipna: object=None) -> str:
1290
1293
if is_float_array(values):
1291
1294
return ' floating'
1292
1295
elif is_integer_float_array(values):
1293
- return ' mixed-integer-float'
1296
+ if is_integer_na_array(values):
1297
+ return ' integer-na'
1298
+ else :
1299
+ return ' mixed-integer-float'
1294
1300
1295
1301
elif util.is_bool_object(val):
1296
1302
if is_bool_array(values, skipna = skipna):
@@ -1526,6 +1532,19 @@ cpdef bint is_integer_array(ndarray values):
1526
1532
return validator.validate(values)
1527
1533
1528
1534
1535
+ cdef class IntegerNaValidator(Validator):
1536
+ cdef inline bint is_value_typed(self , object value) except - 1 :
1537
+ return (util.is_integer_object(value)
1538
+ or (util.is_nan(value) and util.is_float_object(value)))
1539
+
1540
+
1541
+ cdef bint is_integer_na_array(ndarray values):
1542
+ cdef:
1543
+ IntegerNaValidator validator = IntegerNaValidator(len (values),
1544
+ values.dtype)
1545
+ return validator.validate(values)
1546
+
1547
+
1529
1548
cdef class IntegerFloatValidator(Validator):
1530
1549
cdef inline bint is_value_typed(self , object value) except - 1 :
1531
1550
return util.is_integer_object(value) or util.is_float_object(value)
0 commit comments