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

Asad Riaz 30 enero 2023
  1. iloc para obtener el valor de una celda de un Pandas DataFrame
  2. iat y at para obtener el valor de una celda de un Pandas DataFrame
  3. df['col_name'].values[] para obtener el valor de una celda de un dataframe de Pandas
Cómo obtener un valor de una celda de un Pandas DataFrame

Introduciremos métodos para obtener el valor de una celda en el Pandas DataFrame. 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 Pandas DataFrame

iloc es la forma más eficiente de obtener un valor de la célula de un Pandas DataFrame. 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 Pandas DataFrame

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

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