code: def is_nondominated_continuous(self, obs_df):
          
  
          obj_df = obs_df.loc[:,self.obs_obj_names]
          P = list(obj_df.index)
          PP = set()
          PP.add(P[0])
  
          #iidx = 1
          #while iidx < len(P):
          for iidx in P:
              jidx = 0
              drop = []
              keep = True
              for jidx in PP:
                  # if dominates(iidx,jidx):
                  #     drop.append(jidx)
                  # elif dominates(jidx,iidx):
                  #     keep = False
                  #     break
                  if jidx == iidx:
                      continue
                  if self.dominates(obj_df.loc[iidx, :], obj_df.loc[jidx, :]):
                      drop.append(jidx)
                  elif self.dominates(obj_df.loc[jidx, :], obj_df.loc[iidx, :]):
                      keep = False
                      break
              for d in drop:
                  PP.remove(d)
              if keep:
                  PP.add(iidx)
              #iidx += 1
  
  
  
  
          is_nondom = pd.Series(data=False,index=obs_df.index,dtype=bool)
          is_nondom.loc[PP] = True
          return is_nondom
docs: identify which candidate solutions are pareto non-dominated continuously updated,
          but still slow
  
          Parameters
          ----------
          obs_df : pandas.DataFrame
              dataframe with columns of observation names and rows of realizations
  
          Returns
          -------
          is_dominated : pandas.Series
              series with index of obs_df and bool series