Cómo obtener un valor de una celda de un Pandas DataFrame

  1. iloc para obtener el valor de una celda de un Dataframe de Pandas
  2. iat y at para obtener el valor de una celda de un Dataframe de Pandas
  3. df['col_name'].values[] para obtener el valor de una celda de un dataframe de Pandas

Introduciremos métodos para obtener el valor de una celda en el Dataframe de Pandas. Incluyen iloc y iat. ['col_name'].values[] también es una solución, especialmente si no queremos obtener el tipo de retorno como pandas.Series.

iloc para obtener el valor de una celda de un Dataframe de Pandas

iloc es la forma más eficiente de obtener un valor de la célula de un dataframe de Pandas. Digamos que tenemos un dataframe con los nombres de las columnas price y stock, y queremos obtener un valor de la tercera fila para comprobar el precio y la disponibilidad de stock.

Primero, necesitamos acceder a las filas y luego al valor usando el nombre de la columna.

Códigos de ejemplo:

# python 3.x
import pandas as pd
df = pd.DataFrame({
    'name':
    ['orange','banana','lemon','mango','apple'],
    'price':
    [2,3,7,21,11],
    'stock':
    ['Yes','No','Yes','No','Yes']
})
print(df.iloc[2]['price'])
print(df.iloc[2]['stock'])

Producción:

7
Yes

iloc obtiene filas (o columnas) en posiciones particulares del índice. Por eso sólo toma un entero como argumento. Y loc obtiene filas (o columnas) con etiquetas particulares del índice.

iat y at para obtener el valor de una celda de un Dataframe de Pandas

Iat y at son accesos rápidos para que los escalares obtengan valor de una célula de un Dataframe de Pandas.

Códigos de ejemplo:

# python 3.x
import pandas as pd
df = pd.DataFrame({
    'name':
    ['orange','banana','lemon','mango','apple'],
    'price':
    [2,3,7,21,11],
    'stock':
    ['Yes','No','Yes','No','Yes']
})
print(df.iat[0,0])
print(df.at[1,'stock'])

Producción:

orange
No

Para obtener la última entrada de la fila usaremos at[df.index[-1],'stock'].

Códigos de ejemplo:

# python 3.x
import pandas as pd
df = pd.DataFrame({
    'name':
    ['orange','banana','lemon','mango','apple'],
    'price':
    [2,3,7,21,11],
    'stock':
    ['Yes','No','Yes','No','Yes']
})
print(df.at[df.index[-1],'stock'])

Producción:

Yes

df['col_name'].values[] para obtener el valor de una celda de un dataframe de Pandas

df['col_name'].values[] primero convertirá la columna datafarme en un array 1-D y luego accederá al valor en índice de esa array:

Códigos de ejemplo:

# python 3.x
import pandas as pd
df = pd.DataFrame({
    'name':
    ['orange','banana','lemon','mango','apple'],
    'price':
    [2,3,7,21,11],
    'stock':
    ['Yes','No','Yes','No','Yes']
})
print(df['stock'].values[0])

Producción:

Yes

No devuelve un pandas.Series, y es el más simple de usar.

Artículo relacionado - Pandas DataFrame

  • Cómo clasificar Pandas DataFrame por los valores de una columna
  • Mostrar todas las columnas de un Pandas DataFrame