I think youn need get all index values by list comprehension and then select by loc.
Also is necessary use numpy.concatenate for join all indexes together with numpy.unique for remove duplicates.
np.random.seed(100)
rng = pd.date_range('2017-04-03', periods=20)
df = pd.DataFrame({'historical_sales': np.random.choice([100,200,300], size=20)}, index=rng)
print (df)
historical_sales
2017-04-03 100
2017-04-04 100
2017-04-05 100
2017-04-06 300
2017-04-07 300
2017-04-08 100
2017-04-09 300
2017-04-10 200
2017-04-11 300
2017-04-12 300
2017-04-13 300
2017-04-14 300
2017-04-15 200
2017-04-16 100
2017-04-17 100
2017-04-18 100
2017-04-19 100
2017-04-20 300
2017-04-21 100
2017-04-22 200
idxmask = df.index[df['historical_sales']>200]
print (idxmask)
DatetimeIndex(['2017-04-06', '2017-04-07', '2017-04-09', '2017-04-11',
'2017-04-12', '2017-04-13', '2017-04-14', '2017-04-20'],
dtype='datetime64[ns]', freq=None)
#in real data change 1 to 5 for 5 days
temp_index = [df.loc[timestamp - pd.Timedelta(1, unit='d') :
timestamp + pd.Timedelta(1, unit='d')].index for timestamp in idxmask]
idx = np.unique(np.concatenate(temp_index))
df1 = df.loc[idx]
print (df1)
historical_sales
2017-04-05 100
2017-04-06 300
2017-04-07 300
2017-04-08 100
2017-04-09 300
2017-04-10 200
2017-04-11 300
2017-04-12 300
2017-04-13 300
2017-04-14 300
2017-04-15 200
2017-04-19 100
2017-04-20 300
2017-04-21 100