Обратите внимание, что date_list был создан из df , поэтому он включает некоторые даты, присутствующие в индексе там (в df ).
Затем вы читаете df2 и пытаетесь получить pct2 из строк только на эти даты.
Но есть вероятность, что индекс в df2 не содержит ли все даты, указанные в date_list . И именно в этом причина вашего исключения.
Чтобы этого избежать, извлекайте только строки с датами присутствуют в индексе. Чтобы искать только такие «разрешенные» (сузить определение строк), вы должны передать:
dates_list[dates_list.isin(df2.index)]
Запустите это самостоятельно, и вы увидите «разрешенные» даты (некоторые даты будут удалены).
Поэтому измените указание о нарушении на:
df2.loc[dates_list[dates_list.isin(df2.index)], 'pct']