def fillna(self, fill_value, inplace=False): if is_single_value(fill_value): fill_value = np.datetime64(fill_value, 'ms') else: fill_value = columnops.as_column(fill_value, nan_as_null=False) result = cpp_replace.apply_replace_nulls(self, fill_value) result = result.replace(mask=None) return self._mimic_inplace(result, inplace)
def fillna(self, fill_value, inplace=False): """ Fill null values with *fill_value* """ if not self.has_null_mask: return self fill_is_scalar = np.isscalar(fill_value) if fill_is_scalar: if fill_value == self.default_na_value(): fill_value = self.data.dtype.type(fill_value) else: try: fill_value = self._encode( pd.Categorical(fill_value, categories=self.cat().categories)) fill_value = self.data.dtype.type(fill_value) except (ValueError) as err: err_msg = "fill value must be in categories" raise ValueError(err_msg) from err else: fill_value = columnops.as_column(fill_value, nan_as_null=False) # TODO: only required if fill_value has a subset of the categories: fill_value = fill_value.cat()._set_categories( self.cat().categories) fill_value = columnops.as_column(fill_value.data).astype( self.data.dtype) result = cpp_replace.apply_replace_nulls(self, fill_value) result = columnops.build_column( result.data, "category", result.mask, categories=self.cat().categories, ) return self._mimic_inplace(result.replace(mask=None), inplace)
def fillna(self, fill_value, inplace=False): """ Fill null values with *fill_value* """ if np.isscalar(fill_value): # castsafely to the same dtype as self fill_value_casted = self.dtype.type(fill_value) if not np.isnan(fill_value) and (fill_value_casted != fill_value): raise TypeError( "Cannot safely cast non-equivalent {} to {}".format( type(fill_value).__name__, self.dtype.name ) ) fill_value = fill_value_casted else: fill_value = columnops.as_column(fill_value, nan_as_null=False) # cast safely to the same dtype as self if is_integer_dtype(self.dtype): fill_value = safe_cast_to_int(fill_value, self.dtype) else: fill_value = fill_value.astype(self.dtype) result = cpp_replace.apply_replace_nulls(self, fill_value) return self._mimic_inplace(result, inplace)