code: def addVars(self, df):
      lExogDate = self.mDateVariable
      N = df.shape[0]
      # print(np.dtype(df[self.mDateVariable]) ,
      #      np.dtype(self.mEncodedExogenousDataFrame[self.mDateVariable]));
      # print(df.info());
      # print(self.mEncodedExogenousDataFrame.info());
      # print(df.head());
      # print(self.mEncodedExogenousDataFrame.head());
  
      df1 = df[[self.mDateVariable]]
      # df1.info()
      lCompleteEncoded = df1.merge(
          self.mEncodedExogenousDataFrame,
          how="left",
          left_on=self.mDateVariable,
          right_on=lExogDate,
      )
      lCompleteEncoded.fillna(0.0, inplace=True)
      assert lCompleteEncoded.shape[0] == N
  
      # print("EXOG_COLUMNS", self.mEncodedExogenousDataFrame.columns);
      df2 = df.merge(
          lCompleteEncoded,
          how="left",
          left_on=self.mDateVariable,
          right_on=lExogDate,
          suffixes=("_x", ""),
      )
      assert df2.shape[0] == N
      # df1 = df1.drop([lExogDate] , axis = 1);
      # print(df2.columns);
      # print(df2[['Month']].describe());
      return df2
  
file_path: atspy/atspy/TS/Exogenous.py
imports: import pandas
  import numpy
  from .None import Utils
label_desc: Use image node_id 5 for calling the cExogenousInfo obj's underlying member method code with example usage: obj.addVars(df) and returns: df2