@@ -1250,7 +1250,10 @@ def infer_dtype(value: object, skipna: object=None) -> str:
1250
1250
if is_integer_array(values):
1251
1251
return ' integer'
1252
1252
elif is_integer_float_array(values):
1253
- return ' mixed-integer-float'
1253
+ if is_integer_na_array(values):
1254
+ return ' integer-na'
1255
+ else :
1256
+ return ' mixed-integer-float'
1254
1257
return ' mixed-integer'
1255
1258
1256
1259
elif PyDateTime_Check(val):
@@ -1275,7 +1278,10 @@ def infer_dtype(value: object, skipna: object=None) -> str:
1275
1278
if is_float_array(values):
1276
1279
return ' floating'
1277
1280
elif is_integer_float_array(values):
1278
- return ' mixed-integer-float'
1281
+ if is_integer_na_array(values):
1282
+ return ' integer-na'
1283
+ else :
1284
+ return ' mixed-integer-float'
1279
1285
1280
1286
elif util.is_bool_object(val):
1281
1287
if is_bool_array(values, skipna = skipna):
@@ -1511,6 +1517,21 @@ cpdef bint is_integer_array(ndarray values):
1511
1517
return validator.validate(values)
1512
1518
1513
1519
1520
+ cdef class IntegerNaValidator(Validator):
1521
+ cdef inline bint is_value_typed(self , object value) except - 1 :
1522
+ return util.is_integer_object(value) or util.is_nan(value)
1523
+
1524
+ cdef inline bint is_array_typed(self ) except - 1 :
1525
+ return issubclass (self .dtype.type, np.integer)
1526
+
1527
+
1528
+ cdef bint is_integer_na_array(ndarray values):
1529
+ cdef:
1530
+ IntegerNaValidator validator = IntegerNaValidator(len (values),
1531
+ values.dtype)
1532
+ return validator.validate(values)
1533
+
1534
+
1514
1535
cdef class IntegerFloatValidator(Validator):
1515
1536
cdef inline bint is_value_typed(self , object value) except - 1 :
1516
1537
return util.is_integer_object(value) or util.is_float_object(value)
0 commit comments