python pandas indexing slice

Python pandas corta el marco de datos por múltiples rangos de índice



indexing slice (2)

¿Cuál es la forma pitónica de dividir un marco de datos por más rangos de índice (por ejemplo, por 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 como esto sería más elegante:

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


Puede aprovechar la función 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


Puedes usar r_ "truco de corte" de r_ :

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