Проблема с использованием MonthBegin заключается в том, что он преобразует дату 1 в дату 1 предыдущего месяца. Проверьте последнюю дату в индексе.
i = pd.DatetimeIndex(['2013-07-27', '2013-08-03', '2013-08-10', '2013-08-17',
'2013-08-24', '2013-08-31', '2013-09-07', '2013-09-14',
'2013-09-21', '2013-09-28',
'2018-11-03', '2018-11-10', '2018-11-17', '2018-11-24',
'2018-12-01', '2018-12-08', '2018-12-15', '2018-12-22',
'2018-12-29', '2019-01-05', '2019-01-01'])
i - pd.to_timedelta(df.index.day - 1, unit='d')
DatetimeIndex(['2013-07-01', '2013-08-01', '2013-08-01', '2013-08-01',
'2013-08-01', '2013-08-01', '2013-09-01', '2013-09-01',
'2013-09-01', '2013-09-01', '2018-11-01', '2018-11-01',
'2018-11-01', '2018-11-01', '2018-12-01', '2018-12-01',
'2018-12-01', '2018-12-01', '2018-12-01', '2019-01-01',
'2019-01-01'],
dtype='datetime64[ns]', freq=None)