@@ -73,9 +73,12 @@ class SingleColumnTransformer(BaseEstimator):
7373
7474 __single_column_transformer__ = True
7575
76- def fit (self , column , y = None ):
76+ def fit (self , column , y = None , ** kwargs ):
7777 """Fit the transformer.
7878
79+ This default implementation simply calls ``fit_transform()`` and
80+ returns ``self``.
81+
7982 Subclasses should implement ``fit_transform`` and ``transform``.
8083
8184 Parameters
@@ -87,12 +90,15 @@ def fit(self, column, y=None):
8790 y : column or dataframe
8891 Prediction targets.
8992
93+ **kwargs
94+ Extra named arguments are passed to ``self.fit_transform()``.
95+
9096 Returns
9197 -------
9298 self
9399 The fitted transformer.
94100 """
95- self .fit_transform (column , y = y )
101+ self .fit_transform (column , y = y , ** kwargs )
96102 return self
97103
98104 def _check_single_column (self , column , function_name ):
@@ -132,35 +138,35 @@ def _wrap_add_check_single_column(f):
132138 if f .__name__ == "fit" :
133139
134140 @functools .wraps (f )
135- def fit (self , X , y = None ):
141+ def fit (self , X , y = None , ** kwargs ):
136142 self ._check_single_column (X , f .__name__ )
137- return f (self , X , y = y )
143+ return f (self , X , y = y , ** kwargs )
138144
139145 return fit
140146 elif f .__name__ == "partial_fit" :
141147
142148 @functools .wraps (f )
143- def partial_fit (self , X , y = None ):
149+ def partial_fit (self , X , y = None , ** kwargs ):
144150 self ._check_single_column (X , f .__name__ )
145- return f (self , X , y = y )
151+ return f (self , X , y = y , ** kwargs )
146152
147153 return partial_fit
148154
149155 elif f .__name__ == "fit_transform" :
150156
151157 @functools .wraps (f )
152- def fit_transform (self , X , y = None ):
158+ def fit_transform (self , X , y = None , ** kwargs ):
153159 self ._check_single_column (X , f .__name__ )
154- return f (self , X , y = y )
160+ return f (self , X , y = y , ** kwargs )
155161
156162 return fit_transform
157163 else :
158164 assert f .__name__ == "transform" , f .__name__
159165
160166 @functools .wraps (f )
161- def transform (self , X ):
167+ def transform (self , X , ** kwargs ):
162168 self ._check_single_column (X , f .__name__ )
163- return f (self , X )
169+ return f (self , X , ** kwargs )
164170
165171 return transform
166172
@@ -438,7 +444,7 @@ def __init__(
438444 self .rename_columns = rename_columns
439445 self .n_jobs = n_jobs
440446
441- def fit (self , X , y = None ):
447+ def fit (self , X , y = None , ** kwargs ):
442448 """Fit the transformer on each column independently.
443449
444450 Parameters
@@ -449,15 +455,19 @@ def fit(self, X, y=None):
449455 y : Pandas or Polars Series or DataFrame, default=None
450456 The target data.
451457
458+ **kwargs
459+ Extra named arguments are passed to the ``fit_transform()`` method of
460+ the individual column transformers (the clones of ``self.transformer``).
461+
452462 Returns
453463 -------
454464 ApplyToCols
455465 The transformer itself.
456466 """
457- self .fit_transform (X , y )
467+ self .fit_transform (X , y , ** kwargs )
458468 return self
459469
460- def fit_transform (self , X , y = None ):
470+ def fit_transform (self , X , y = None , ** kwargs ):
461471 """Fit the transformer on each column independently and transform X.
462472
463473 Parameters
@@ -468,6 +478,10 @@ def fit_transform(self, X, y=None):
468478 y : Pandas or Polars Series or DataFrame, default=None
469479 The target data.
470480
481+ **kwargs
482+ Extra named arguments are passed to the ``fit_transform()`` method of
483+ the individual column transformers (the clones of ``self.transformer``).
484+
471485 Returns
472486 -------
473487 result : Pandas or Polars DataFrame
@@ -485,19 +499,25 @@ def fit_transform(self, X, y=None):
485499 self ._columns ,
486500 self .transformer ,
487501 self .allow_reject ,
502+ kwargs ,
488503 )
489504 for col_name in all_columns
490505 )
491506 return self ._process_fit_transform_results (results , X )
492507
493- def transform (self , X ):
508+ def transform (self , X , ** kwargs ):
494509 """Transform a dataframe.
495510
496511 Parameters
497512 ----------
498513 X : Pandas or Polars DataFrame
499514 The column to transform.
500515
516+ **kwargs
517+ Extra named arguments are passed to the ``transform()`` method of
518+ the fitted individual column transformers (the values of
519+ ``self.transformers_``, which are clones of ``self.transformer``).
520+
501521 Returns
502522 -------
503523 result : Pandas or Polars DataFrame
@@ -507,10 +527,7 @@ def transform(self, X):
507527 parallel = Parallel (n_jobs = self .n_jobs )
508528 func = delayed (_transform_column )
509529 outputs = parallel (
510- func (
511- sbd .col (X , col_name ),
512- self .transformers_ .get (col_name ),
513- )
530+ func (sbd .col (X , col_name ), self .transformers_ .get (col_name ), kwargs )
514531 for col_name in sbd .column_names (X )
515532 )
516533 transformed_columns = []
@@ -586,7 +603,9 @@ def _prepare_transformer_input(transformer, column):
586603 return sbd .make_dataframe_like (column , [column ])
587604
588605
589- def _fit_transform_column (column , y , columns_to_handle , transformer , allow_reject ):
606+ def _fit_transform_column (
607+ column , y , columns_to_handle , transformer , allow_reject , kwargs
608+ ):
590609 col_name = sbd .name (column )
591610 if col_name not in columns_to_handle :
592611 return col_name , [column ], None
@@ -595,7 +614,7 @@ def _fit_transform_column(column, y, columns_to_handle, transformer, allow_rejec
595614 transformer_input = _prepare_transformer_input (transformer , column )
596615 allowed = (RejectColumn ,) if allow_reject else ()
597616 try :
598- output = transformer .fit_transform (transformer_input , y = y )
617+ output = transformer .fit_transform (transformer_input , y = y , ** kwargs )
599618 except allowed :
600619 return col_name , [column ], None
601620 except Exception as e :
@@ -608,12 +627,12 @@ def _fit_transform_column(column, y, columns_to_handle, transformer, allow_rejec
608627 return col_name , output_cols , transformer
609628
610629
611- def _transform_column (column , transformer ):
630+ def _transform_column (column , transformer , kwargs ):
612631 if transformer is None :
613632 return [column ]
614633 transformer_input = _prepare_transformer_input (transformer , column )
615634 try :
616- output = transformer .transform (transformer_input )
635+ output = transformer .transform (transformer_input , ** kwargs )
617636 except Exception as e :
618637 raise ValueError (
619638 f"Transformer { transformer .__class__ .__name__ } .transform "
0 commit comments