Cortando múltiples rangos de columnas en Pandas, por lista de nombres

Estoy tratando de seleccionar varias columnas en un marco de datos de Pandas en dos enfoques diferentes:

1) a través del número de columnas, por ejemplo, columnas 1-3 y columnas 6 en adelante.

y

2) a través de una lista de nombres de columna, por ejemplo:

years = list(range(2000,2017))
months = list(range(1,13))
years_month = list(["A", "B", "B"])
for y in years:
    for m in months:
        y_m = str(y) + "-" + str(m)
        years_month.append(y_m)     

Entonces,años_mes produciría lo siguiente:

['A',
 'B',
 'C',
 '2000-1',
 '2000-2',
 '2000-3',
 '2000-4',
 '2000-5',
 '2000-6',
 '2000-7',
 '2000-8',
 '2000-9',
 '2000-10',
 '2000-11',
 '2000-12',
 '2001-1',
 '2001-2',
 '2001-3',
 '2001-4',
 '2001-5',
 '2001-6',
 '2001-7',
 '2001-8',
 '2001-9',
 '2001-10',
 '2001-11',
 '2001-12']

Dicho esto, ¿cuál es la mejor (o correcta) forma de cargar solo las columnas en las que los nombres están en la listaaños_mes en los dos enfoques?