docs: def pandas_df(self):
          """
          Returns pandas DataFrame containing pixel counts for all truth classes,
          classified classes (for each truth class), and file name of the input
          EODataSet.
  
          The data frame thus contains
  
          N =  self.n_validation_sets rows
  
          and
  
          M = len(self.truth_classes) + len(self.truth_classes) * len (self.class_dictionary) + 1 columns
          """
  
          if self.val_df is not None:
              return self.val_df
  
          clf = self.pixel_classification_counts.reshape(self.pixel_classification_counts.shape[0],
                                                         self.pixel_classification_counts.shape[1] *
                                                         self.pixel_classification_counts.shape[2])
  
          combo = np.hstack((self.pixel_truth_counts, clf))
  
          columns = list(itertools.product(self.truth_classes, list(self.class_dictionary.keys())))
          columns = [(item[0] + '_as_' + item[1]).replace(" ", "_") for item in columns]
          truth_columns = ['truth_' + item.replace(" ", "_") for item in self.truth_classes]
  
          self.val_df = pd.DataFrame(combo, columns=truth_columns + columns)
  
          return self.val_df