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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow