23 lines
587 B
Python
23 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
|