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