Could you check the path you are using to open the image:
os.path.join(self.df.loc[idx, self.root_dir].values[0], self.df.loc[idx, self.image_column].values[0])

Could it be that .values[0] is indexing the first image only?