24 lines
587 B
Python
24 lines
587 B
Python
|
import numpy as np
|
||
|
|
||
|
import pandas as pd
|
||
|
|
||
|
|
||
|
def is_object_or_nan_string_dtype(dtype):
|
||
|
"""
|
||
|
Check if string-like dtype is following NaN semantics, i.e. is object
|
||
|
dtype or a NaN-variant of the StringDtype.
|
||
|
"""
|
||
|
return (isinstance(dtype, np.dtype) and dtype == "object") or (
|
||
|
dtype.na_value is np.nan
|
||
|
)
|
||
|
|
||
|
|
||
|
def _convert_na_value(ser, expected):
|
||
|
if ser.dtype != object:
|
||
|
if ser.dtype.na_value is np.nan:
|
||
|
expected = expected.fillna(np.nan)
|
||
|
else:
|
||
|
# GH#18463
|
||
|
expected = expected.fillna(pd.NA)
|
||
|
return expected
|