Pandas de Python dividen el dataframe por múltiples rangos de índice

¿Cuál es la forma pythonica de dividir un dataframe en más rangos de índice (por ejemplo, a las 10:12 y 25:28 )? Quiero esto de una manera más elegante:

 df = pd.DataFrame({'a':range(10,100)}) df.iloc[[i for i in range(10,12)] + [i for i in range(25,28)]] 

Resultado:

  a 10 20 11 21 25 35 26 36 27 37 

Algo así sería más elegante:

 df.iloc[(10:12, 25:28)] 

¡Gracias!

Puedes usar el tr_ “truco de corte” de numpy :

 df = pd.DataFrame({'a':range(10,100)}) df.iloc[pd.np.r_[10:12, 25:28]] 

Da:

  a 10 20 11 21 25 35 26 36 27 37 

Puedes aprovechar la función de pandas isin.

 df = pd.DataFrame({'a':range(10,100)}) ls = [i for i in range(10,12)] + [i for i in range(25,28)] df[df.index.isin(ls)] a 10 20 11 21 25 35 26 36 27 37