code: def event_duration(self, obj, dictionary, low_bound=None, high_bound=None):
          
  
          data = obj.df
          N_cols = data.shape[1]
  
          if low_bound:
              data = data.where(data >= low_bound)
          if high_bound:
              data=data.where(data < high_bound)
  
          for i in range(N_cols):
  
              data_per_meter = data.iloc[:, [i]]
  
              data_missing, meter = self.identify_missing(data_per_meter)
              uuid = self.find_uuid(obj, column_name=meter)
              data_gaps = self.diff_boolean(data_missing, meter, uuid)
  
              dictionary_solo = data_gaps.to_dict()
              dictionary[uuid] = dictionary_solo[uuid]
              # dictionary[uuid]=data_gaps # uncomment to get a dictionary of dfs
  
          return dictionary
docs: Takes in an object and returns a dictionary with the missing data events (start and end)
          for each column in the inputted object (will map to a uuid)
  
          To Do
          -----
          Need to make it specific for varying meters and label it for each type,
          Either separate functions or make the function broader
  
          Parameters
          ----------
          obj             : ???
              the object returned by the MDAL Query
          dictionary      : dict
              name of the dictionary
          low_bound       : float
               all data equal to or below this value will be interpreted as missing data
          high_bound      : float
               all data above this value will be interpreted as missing data
  
          Returns
          -------
          dict
              dictionary with the format:
              {uuid:{start of event 1: end of event 1, start of event 2: end of event 2, ...}, uuid:{..}}