class_docstr: Sklearn-compatible estimator, for column-wise imputing DataFrames by replacing all ``NaNs`` and ``infs``
  with with average/extreme values from the same columns. It is basically a wrapper around
  :func:`~tsfresh.utilities.dataframe_functions.impute`.
  
  Each occurring ``inf`` or ``NaN`` in the DataFrame is replaced by
  
  * ``-inf`` -> ``min``
  * ``+inf`` -> ``max``
  * ``NaN`` -> ``median``
  
  This estimator - as most of the sklearn estimators - works in a two step procedure. First, the ``.fit``
  function is called where for each column the min, max and median are computed.
  Secondly, the ``.transform`` function is called which replaces the occurances of ``NaNs`` and ``infs`` using
  the column-wise computed min, max and median values.
docstr: Column-wise replace all ``NaNs``, ``-inf`` and ``+inf`` in the DataFrame `X` with average/extreme
  values from the provided dictionaries.
  
  :param X: DataFrame to impute
  :type X: pandas.DataFrame
  
  :return: imputed DataFrame
  :rtype: pandas.DataFrame
  :raise RuntimeError: if the replacement dictionaries are still of None type.
   This can happen if the transformer was not fitted.
code: def transform(self, X):
      """
      Column-wise replace all ``NaNs``, ``-inf`` and ``+inf`` in the DataFrame `X` with average/extreme
      values from the provided dictionaries.
  
      :param X: DataFrame to impute
      :type X: pandas.DataFrame
  
      :return: imputed DataFrame
      :rtype: pandas.DataFrame
      :raise RuntimeError: if the replacement dictionaries are still of None type.
       This can happen if the transformer was not fitted.
      """
  
      if not isinstance(X, pd.DataFrame):
          X = pd.DataFrame(X)
  
      if (
          self._col_to_NINF_repl is None
          or self._col_to_PINF_repl is None
          or self._col_to_NAN_repl is None
      ):
          raise NotFittedError("PerColumnImputer is not fitted")
  
      X = impute_dataframe_range(
          X,
          self._col_to_PINF_repl,
          self._col_to_NINF_repl,
          self._col_to_NAN_repl,
      )
  
      return X
  
file_path: tsfresh/tsfresh/transformers/per_column_imputer.py
imports: import pandas
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.exceptions import NotFittedError
  from tsfresh.utilities.dataframe_functions import get_range_values_per_column, impute_dataframe_range
label_desc: Use image node_id 3 for calling the PerColumnImputer obj's underlying member method code with example usage: obj.transform(X) and returns: X