El propósito principal del operador de indexación de DataFrame []
es seleccionar columnas.
Cuando el operador de indexación pasa una cadena o un entero, intenta encontrar una columna con ese nombre en particular y devolverla como una Serie.
Entonces, en la pregunta anterior: df[2]
busca un nombre de columna que coincida con el valor entero 2
. Esta columna no existe y KeyError
se genera a.
El operador de indexación de DataFrame cambia completamente el comportamiento para seleccionar filas cuando se usa la notación de corte
Curiosamente, cuando se le da un segmento, el operador de indexación de DataFrame selecciona filas y puede hacerlo por ubicación entera o por etiqueta de índice.
df[2:3]
Esto se dividirá comenzando desde la fila con la ubicación de enteros 2 hasta 3, excluyendo el último elemento. Entonces, solo una fila. A continuación, se seleccionan las filas que comienzan en la ubicación de enteros 6 hasta 20, pero no se incluyen 20 por cada tercera fila.
df[6:20:3]
También puede usar sectores que consisten en etiquetas de cadena si su índice DataFrame tiene cadenas. Para más detalles, vea esta solución en .iloc vs .loc .
Casi nunca uso esta notación de corte con el operador de indexación, ya que no es explícito y casi nunca se usa. Al cortar en hileras, quédese con .loc/.iloc
.
df.ix[2]
no funciona - al menos no enpandas version '0.19.2'