class_docstr: A Column object for Numeric types.
  
  Parameters
  ----------
  data : Buffer
  dtype : np.dtype
      The dtype associated with the data Buffer
  mask : Buffer, optional
class_docstr_tok: ["A","Column","object","for","Numeric","types",".","Parameters","--","--","--","--","--","data",":","Buffer","dtype",":","np.dtype","The","dtype","associated","with","the","data","Buffer","mask",":","Buffer",",","optional"]
docstr: Return col with *to_replace* replaced with *value*.
docstr_tok: ["Return","col","with","*","to_replace","*","replaced","with","*","value","*","."]
code: def find_and_replace(
      self,
      to_replace: ColumnLike,
      replacement: ColumnLike,
      all_nan: bool = False,
  ) -> NumericalColumn:
      """
      Return col with *to_replace* replaced with *value*.
      """
  
      # If all of `to_replace`/`replacement` are `None`,
      # dtype of `to_replace_col`/`replacement_col`
      # is inferred as `string`, but this is a valid
      # float64 column too, Hence we will need to type-cast
      # to self.dtype.
      to_replace_col = column.as_column(to_replace)
      if to_replace_col.null_count == len(to_replace_col):
          to_replace_col = to_replace_col.astype(self.dtype)
  
      replacement_col = column.as_column(replacement)
      if replacement_col.null_count == len(replacement_col):
          replacement_col = replacement_col.astype(self.dtype)
  
      if not isinstance(to_replace_col, type(replacement_col)):
          raise TypeError(
              f"to_replace and value should be of same types,"
              f"got to_replace dtype: {to_replace_col.dtype} and "
              f"value dtype: {replacement_col.dtype}"
          )
  
      if not isinstance(
          to_replace_col, NumericalColumn
      ) and not isinstance(replacement_col, NumericalColumn):
          return self.copy()
  
      to_replace_col = _normalize_find_and_replace_input(
          self.dtype, to_replace
      )
      if all_nan:
          replacement_col = column.as_column(
              replacement, dtype=self.dtype
          )
      else:
          replacement_col = _normalize_find_and_replace_input(
              self.dtype, replacement
          )
      if len(replacement_col) == 1 and len(to_replace_col) > 1:
          replacement_col = column.as_column(
              full(len(to_replace_col), replacement[0], self.dtype)
          )
      elif len(replacement_col) == 1 and len(to_replace_col) == 0:
          return self.copy()
      (
          to_replace_col,
          replacement_col,
          replaced,
      ) = numeric_normalize_types(to_replace_col, replacement_col, self)
      df = cudf.DataFrame._from_data(
          {"old": to_replace_col, "new": replacement_col}
      )
      df = df.drop_duplicates(
          subset=["old"], keep="last", ignore_index=True
      )
      if df._data["old"].null_count == 1:
          replaced = replaced.fillna(
              df._data["new"]
              .apply_boolean_mask(df._data["old"].isnull())
              .element_indexing(0)
          )
          df = df.dropna(subset=["old"])
  
      return libcudf.replace.replace(
          replaced, df._data["old"], df._data["new"]
      )
  
imports: from __future__ import annotations
  from typing import Any, Callable, Mapping, Optional, Sequence, Tuple, Union, cast
  import cupy
  import numpy
  import pandas
  from typing_extensions import Self
  import cudf
  from cudf import _lib
  from cudf._lib.types import size_type_dtype
  from cudf._typing import ColumnBinaryOperand, ColumnLike, Dtype, DtypeObj, ScalarLike
  from cudf.api.types import is_bool_dtype, is_float_dtype, is_integer, is_integer_dtype, is_scalar
  from cudf.core.buffer import Buffer, cuda_array_interface_wrapper
  from cudf.core.column import ColumnBase, as_column, build_column, column, full, string
  from cudf.core.dtypes import CategoricalDtype
  from cudf.core.mixins import BinaryOperand
  from cudf.utils.dtypes import NUMERIC_TYPES, min_column_type, min_signed_type, np_dtypes_to_pandas_dtypes, numeric_normalize_types
  from .numerical_base import NumericalBaseColumn
label_desc: Use image node_id 24 for calling the NumericalColumn obj's underlying member method code with example usage: obj.find_and_replace(to_replace, replacement, all_nan) and returns: libcudf, self, self