class_docstr: Filter a times series using the Christiano Fitzgerald filter.
  
  This is a wrapper around the `cffilter` function from `statsmodels`.
  (see `statsmodels.tsa.filters.cf_filter.cffilter`).
  
  Parameters
  ----------
  low : float, optional, default = 6.0
      Minimum period of oscillations. Features below low periodicity
      are filtered out. For quarterly data, the default of 6 gives
      1.5 years periodicity.
  
  high : float, optional, default = 32.0
      Maximum period of oscillations. Features above high periodicity
      are filtered out. For quarterly data, the default of 32 gives
      8 year periodicity.
  
  drift : bool, optional, default = True
      Whether or not to subtract a trend from the data.
      The trend is estimated as np.arange(nobs)*(x[-1] -x[0])/(len(x)-1).
      > X : argument of CFFilter._transform()
      > x : If X is 1d, X=x. If 2d, x is assumed to be in columns.
      > nobs : len(x)
  
  Examples
  --------
  >>> from sktime.transformations.series.cffilter import CFFilter # doctest: +SKIP
  >>> import pandas as pd # doctest: +SKIP
  >>> import statsmodels.api as sm # doctest: +SKIP
  >>> dta = sm.datasets.macrodata.load_pandas().data # doctest: +SKIP
  >>> index = pd.date_range(start='1959Q1', end='2009Q4', freq='Q') # doctest: +SKIP
  >>> dta.set_index(index, inplace=True) # doctest: +SKIP
  >>> cf = CFFilter(6, 24, True) # doctest: +SKIP
  >>> cycles = cf.fit_transform(X=dta[['realinv']]) # doctest: +SKIP
docstr: Transform X and return a transformed version.
  
  private _transform containing core logic, called from transform
  
  Parameters
  ----------
  X : array_like
  A 1 or 2d ndarray. If 2d, variables are assumed to be in columns.
  
  Returns
  -------
  transformed cyclical version of X
docstr_tok: ["Transform","X","and","return","a","transformed","version",".","private","_transform","containing","core","logic",",","called","from","transform","Parameters","--","--","--","--","--","X",":","array_like","A","1","or","2d","ndarray",".","If","2d",",","variables","are","assumed","to","be","in","columns",".","Returns","--","--","--","-","transformed","cyclical","version","of","X"]
code: def _transform(self, X, y=None):
      """Transform X and return a transformed version.
  
      private _transform containing core logic, called from transform
  
      Parameters
      ----------
      X : array_like
      A 1 or 2d ndarray. If 2d, variables are assumed to be in columns.
  
      Returns
      -------
      transformed cyclical version of X
      """
      from statsmodels.tsa.filters.cf_filter import cffilter
  
      kwargs = {"low": self.low, "high": self.high, "drift": self.drift}
      return cffilter(X, **kwargs)[0]
  
imports: import pandas
  from sktime.transformations.base import BaseTransformer
label_desc: Use image node_id 2 for calling the CFFilter obj's underlying member method code with example usage: obj._transform(X, y) and returns: cffilter