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