code: def _fill_columns_with_fn(self, X, missing_mask, col_fn):
      for col_idx in range(X.shape[1]):
          missing_col = missing_mask[:, col_idx]
          n_missing = missing_col.sum()
          if n_missing == 0:
              continue
          col_data = X[:, col_idx]
          fill_values = col_fn(col_data)
          if np.all(np.isnan(fill_values)):
              fill_values = 0
          X[missing_col, col_idx] = fill_values
  
file_path: fancyimpute/fancyimpute/solver.py
imports: import warnings
  import numpy
  from sklearn.utils import check_array
  from .common import generate_random_column_samples
label_desc: Use image node_id 6 for calling the Solver obj's underlying member method code with example usage: obj._fill_columns_with_fn(X, missing_mask, col_fn) without return types