code: def get_df_ilocs(self, band, date):
          
  
          df = self.df_layers.copy()
          df["index"] = range(df.shape[0])
  
          idx_layers = []
          if isinstance(band, str) and isinstance(date, str):
              idx_layers = df[(df["date"] == date) &  (df["band"] == band)]["index"].values[0]
          if isinstance(band, list) and isinstance(date, str):
              for b in band:
                  idx = df[(df["date"] == date) &  (df["band"] == b)]["index"].values[0]
                  idx_layers.append(idx)
          elif isinstance(band, str) and isinstance(date, list):
              for d in date:
                  idx = df[(df["band"] == band) &  (df["date"] == d)]["index"].values[0]
                  idx_layers.append(idx)
          return idx_layers
docs: Get positions of rows matching specific band(s) and date(s).
  
          The method supports three typical queries:
  
          * one band and one date (both given as strings)
  
          * one band and of several dates (band given as strings, date as list of strings)
  
          * several band and of one date (date given as strings, band as list of strings)
  
          Arguments:
              band {str or list} -- Band(s) for which to derive the iloc index.
              date {str or list} -- Date(s) for which to derive the iloc index.
  
          Returns:
              int or list -- Integer (if band and date are str) or list of iloc indices.