class_docstr: RelativeFeatures() applies basic mathematical operations between a group
  of variables and one or more reference features. It adds the resulting features
  to the dataframe.
  
  In other words, RelativeFeatures() adds, subtracts, multiplies, performs the
  division, true division, floor division, module or exponentiation of a group of
  features to / by a group of reference variables. The features resulting from these
  functions are added to the dataframe.
  
  This transformer works only with numerical variables. It uses the pandas methods
  `pd.DataFrme.add`, `pd.DataFrme.sub`, `pd.DataFrme.mul`, `pd.DataFrme.div`,
  `pd.DataFrme.truediv`, `pd.DataFrme.floordiv`, `pd.DataFrme.mod` and
  `pd.DataFrme.pow`.
  Find out more in `pandas documentation
  <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.add.html>`_.
  
  More details in the :ref:`User Guide <relative_features>`.
  
  Parameters
  ----------
  variables: list
      The list of numerical variables to combine with the reference variables.
  
  reference: list
      The list of reference variables that will be added, subtracted, multiplied,
      used as denominator for division and module, or exponent for the exponentiation.
  
  func: list
      The list of functions to be used in the transformation. The list can contain
      one or more of the following strings: 'add', 'mul','sub', 'div', truediv,
      'floordiv', 'mod', 'pow'.
  
  {missing_values}
  
  {drop_original}
  
  Attributes
  ----------
  {variables_}
  
  {feature_names_in_}
  
  {n_features_in_}
  
  Methods
  -------
  {fit}
  
  {fit_transform}
  
  {transform}
  
  Notes
  -----
  Although the transformer allows us to combine any feature with any function, we
  recommend its use to create domain knowledge variables. Typical examples within the
  financial sector are:
  
  - Ratio between income and debt to create the debt_to_income_ratio.
  - Subtraction of rent from income to obtain the disposable_income.
  
  Examples
  --------
  
  >>> import pandas as pd
  >>> from feature_engine.creation import RelativeFeatures
  >>> X = pd.DataFrame(dict(x1 = [1,2,3], x2 = [4,5,6], x3 = [3,4,5]))
  >>> rf = RelativeFeatures(variables = ["x1","x2"],
  >>>                     reference = ["x3"],
  >>>                     func = ["div"])
  >>> rf.fit(X)
  >>> rf.transform(X)
     x1  x2  x3  x1_div_x3  x2_div_x3
  0   1   4   3   0.333333   1.333333
  1   2   5   4   0.500000   1.250000
  2   3   6   5   0.600000   1.200000
class_docstr_tok: ["RelativeFeatures","(",")","applies","basic","mathematical","operations","between","a","group","of","variables","and","one","or","more","reference","features",".","It","adds","the","resulting","features","to","the","dataframe",".","In","other","words",",","RelativeFeatures","(",")","adds",",","subtracts",",","multiplies",",","performs","the","division",",","true","division",",","floor","division",",","module","or","exponentiation","of","a","group","of","features","to","\/","by","a","group","of","reference","variables",".","The","features","resulting","from","these","functions","are","added","to","the","dataframe",".","This","transformer","works","only","with","numerical","variables",".","It","uses","the","pandas","methods","`","pd.DataFrme.add","`",",","`","pd.DataFrme.sub","`",",","`","pd.DataFrme.mul","`",",","`","pd.DataFrme.div","`",",","`","pd.DataFrme.truediv","`",",","`","pd.DataFrme.floordiv","`",",","`","pd.DataFrme.mod","`","and","`","pd.DataFrme.pow","`",".","Find","out","more","in","`","pandas","documentation","<","https",":","\/\/pandas.pydata.org\/pandas-docs\/stable\/reference\/api\/pandas.DataFrame.add.html",">","`","_",".","More","details","in","the",":","ref",":","`","User","Guide","<","relative_features",">","`",".","Parameters","--","--","--","--","--","variables",":","list","The","list","of","numerical","variables","to","combine","with","the","reference","variables",".","reference",":","list","The","list","of","reference","variables","that","will","be","added",",","subtracted",",","multiplied",",","used","as","denominator","for","division","and","module",",","or","exponent","for","the","exponentiation",".","func",":","list","The","list","of","functions","to","be","used","in","the","transformation",".","The","list","can","contain","one","or","more","of","the","following","strings",":","'add","'",",","'mul","'",",","'sub","'",",","'div","'",",","truediv",",","'floordiv","'",",","'mod","'",",","'pow","'",".","{","missing_values","}","{","drop_original","}","Attributes","--","--","--","--","--","{","variables_","}","{","feature_names_in_","}","{","n_features_in_","}","Methods","--","--","--","-","{","fit","}","{","fit_transform","}","{","transform","}","Notes","--","--","-","Although","the","transformer","allows","us","to","combine","any","feature","with","any","function",",","we","recommend","its","use","to","create","domain","knowledge","variables",".","Typical","examples","within","the","financial","sector","are",":","-","Ratio","between","income","and","debt","to","create","the","debt_to_income_ratio",".","-","Subtraction","of","rent","from","income","to","obtain","the","disposable_income",".","Examples","--","--","--","--",">",">",">","import","pandas","as","pd",">",">",">","from","feature_engine.creation","import","RelativeFeatures",">",">",">","X","=","pd.DataFrame","(","dict","(","x1","=","[","1,2,3","]",",","x2","=","[","4,5,6","]",",","x3","=","[","3,4,5","]",")",")",">",">",">","rf","=","RelativeFeatures","(","variables","=","[","``","x1","''",",","''","x2","''","]",",",">",">",">","reference","=","[","``","x3","''","]",",",">",">",">","func","=","[","``","div","''","]",")",">",">",">","rf.fit","(","X",")",">",">",">","rf.transform","(","X",")","x1","x2","x3","x1_div_x3","x2_div_x3","0","1","4","3","0.333333","1.333333","1","2","5","4","0.500000","1.250000","2","3","6","5","0.600000","1.200000"]
code: def _floordiv(self, X):
      for reference in self.reference:
          if (X[reference] == 0).any():
              raise ValueError(
                  "Some of the reference variables contain 0 as values. Check and "
                  "remove those before using this transformer."
              )
          varname = [
              f"{var}_floordiv_{reference}" for var in self.variables
          ]
          X[varname] = X[self.variables].floordiv(X[reference], axis=0)
      return X
  
imports: from typing import List, Union
  import pandas
  from feature_engine._docstrings.fit_attributes import _feature_names_in_docstring, _n_features_in_docstring, _variables_attribute_docstring
  from feature_engine._docstrings.init_parameters import _drop_original_docstring, _missing_values_docstring, _variables_numerical_docstring
  from feature_engine._docstrings.methods import _fit_not_learn_docstring, _fit_transform_docstring, _transform_creation_docstring
  from feature_engine._docstrings.substitute import Substitution
  from feature_engine.creation.base_creation import BaseCreation
label_desc: Use image node_id 8 for calling the RelativeFeatures obj's underlying member method code with example usage: obj._floordiv(X) and returns: X