Siguiendo con esta la notación tipo diccionario, es posible seleccionar rangos de valores. De esta forma, si usamos un rango numérico en una serie en la que hemos definido un índice explícito:
...observamos que el rango se interpreta como haciendo referencia al índice implícito, y se incluyen los valores desde el primer índice incluido, hasta el último sin incluir.
Si no se incluye alguno de los límites, el comportamiento es el estándar en Python (si no se incluye el primer valor, se consideran todos los elementos desde el principio, y si no se incluye el último valor, se consideran todos los elementos hasta el final):
Si se utilizan los índices explícitos en el rango, el comportamiento es ligeramente diferente:
Vemos cómo se incluyen los valores desde el primer índice hasta el último índice, ambos incluidos.
Aquí también podemos obviar el uso de alguno de los dos límites:
Una posible fuente de confusión viene derivada del hecho de que, usando rangos, es posible hacer referencia tanto a las etiquetas como a los índices numéricos: si utilizamos etiquetas, hacemos referencia a las etiquetas (por supuesto):
...y, por tanto, si utilizamos números, hacemos referencia a los índices numéricos (¿por supuesto...?):
¿Y qué ocurre si nuestras etiquetas son números? Pues que siempre que usemos rangos con números estaremos haciendo referencia a los índices numéricos: no es posible hacer referencia a las etiquetas:
Sin embargo, algo como
s[1]
devolverá el valor cuya etiqueta es 1 (si existe):
...o el valor cuya posición es 1 si dicha etiqueta no existe y el índice explícito no es numérico:
Es debido a esto que existen los métodos loc e iloc que veremos poco más adelante. Dichos métodos hacen una referencia explícita a etiquetas o posiciones, respectivamente, eliminando cualquier duda al respecto de su interpretación.