pandas
Uso de .ix, .iloc, .loc, .at y .iat para acceder a un DataFrame
Buscar..
Utilizando .iloc
.iloc usa números enteros para leer y escribir datos en un DataFrame.
Primero, vamos a crear un DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Este DataFrame se ve como:
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Ahora podemos usar .iloc para leer y escribir valores. Vamos a leer la primera fila, primera columna:
print df.iloc[0, 0]
Esto imprimirá:
1
También podemos establecer valores. Permite establecer la segunda columna, segunda fila a algo nuevo:
df.iloc[1, 1] = '21'
Y luego echar un vistazo para ver qué pasó:
print df
one two
a 1 6
b 2 21
c 3 8
d 4 9
e 5 10
Utilizando .loc
.loc usa etiquetas para leer y escribir datos.
Vamos a configurar un DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Luego podemos imprimir el marco de datos para ver la forma:
print df
Esto dará salida
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Usamos las etiquetas de columna y fila para acceder a los datos con .loc. Fijemos la fila 'c', columna 'dos' al valor 33:
df.loc['c', 'two'] = 33
Así es como se ve ahora el DataFrame:
one two
a 1 6
b 2 7
c 3 33
d 4 9
e 5 10
Es de destacar que el uso de df['two'].loc['c'] = 33
puede no informar una advertencia, e incluso puede funcionar, sin embargo, usar df.loc['c', 'two']
está garantizado para funcionar correctamente , mientras que el primero no lo es.
Podemos leer porciones de datos, por ejemplo
print df.loc['a':'c']
imprimirá las filas a a c. Esto es inclusivo.
one two
a 1 6
b 2 7
c 3 8
Y finalmente, podemos hacer las dos cosas juntos:
print df.loc['b':'d', 'two']
Saldrá las filas b a c de la columna 'dos'. Observe que la etiqueta de la columna no está impresa.
b 7
c 8
d 9
Si .loc se suministra con un argumento entero que no es una etiqueta, vuelve a la indexación entera de los ejes (el comportamiento de .iloc). Esto hace posible la indexación de etiquetas y enteros mixtos:
df.loc['b', 1]
devolverá el valor en la segunda columna (el índice comienza en 0) en la fila 'b':
7