code: def get_sf_values(self, filename='shlp_hour_factors.csv'):
          
          file = os.path.join(self.datapath, filename)
          hour_factors = pd.read_csv(file, index_col=0)
          hour_factors = hour_factors.query(
              'building_class=={0} and shlp_type=="{1}"'.format(
                  self.building_class, self.shlp_type))
  
          # Join the two DataFrames on the columns 'hour' and 'hour_of_the_day'
          # or ['hour' 'weekday'] and ['hour_of_the_day', 'weekday'] if it is
          # not a residential slp.
          residential = self.building_class > 0
          left_cols = ['hour_of_day'] + (['weekday'] if not residential else [])
          right_cols = ['hour'] + (['weekday'] if not residential else [])
          sf_mat = pd.DataFrame.merge(
              hour_factors, self.df, left_on=left_cols, right_on=right_cols,
              how='outer', left_index=True).sort_index()
  
          # drop unnecessary columns
          drop_cols = (
              ['hour_of_day', 'hour', 'building_class', 'shlp_type',
               'date', 'temperature'] + (['weekday_x'] if residential else []) +
              (['weekday_y'] if residential else []) +
              (['weekday'] if not residential else []))
          sf_mat = sf_mat.drop(drop_cols, 1)
  
          # Determine the h values
          length = len(self.temperature)
          sf = (np.array(sf_mat)[np.array(list(range(0, length)))[:],
                                 (self.get_temperature_interval() - 1)[:]])
          return np.array(list(map(float, sf[:])))
docs: Determine the h-values
  
          Parameters
          ----------
          filename : string
              name of file where sigmoid factors are stored