Является ли число строк между датами фиксированным?
Если это так, вы можете создать новый столбец с повторяющимися датами с помощью:
dates = df[0][::6].repeat(6)
df['dates'] = dates.values
Затем вам нужно будет удалитьзаголовки строк, либо используя тот факт, что они будут иметь нулевые значения (если у вас нет нулевых значений в других местах), либо используя те же рассуждения, которые я делал выше относительно расстояния между строками.
После этого вы можете простоотфильтруйте то, что вы хотите, просто сделав
df[df['dates'] == '7/31/2018']