Please consider this df:
df = pd.DataFrame({\'a\':[1,2], \'b\':[1,2], \'c\':[1,2], \'d\':[1,2], \'e\':[1,2], \'f\':[1,2], \'g\':[1,2], \'h\':[1,2]})
a b
You can do this:
df.iloc[:, [0, 3] + list(range(5,8))]
[0, 3] + list(range(5,8))
concatenates 2 lists, combining your explicit list with a list derived from your desired range.
Alternatively, you can use numpy.r to build an indexing array for you:
import numpy as np
df.iloc[:, np.r_[0,3,5:8]]
np.r_[0,3,5:8] # array([0, 3, 5, 6, 7])
This would be useful, for example, if you have multiple ranges.