HOWTO · Pandas

Obtener la primera fila del Dataframe Pandas

Aprende a seleccionar la primera fila de un DataFrame de Pandas con iloc, head(), filtrado, query(), take() y slicing, y a elegir entre un resultado Series o DataFrame.

En esta página

Usa df.iloc[0] para obtener la primera fila como una Series, o df.head(1) para conservarla como un DataFrame de una fila. Si buscas la primera fila que cumpla ciertos criterios, filtra primero y luego selecciona el primer resultado.

Los ejemplos usan este pequeño DataFrame para que sea fácil seguir los valores seleccionados y las etiquetas originales de las filas. Cada bloque de código es independiente y puede ejecutarse en un entorno Python con pandas instalado; después de cada ejemplo se muestra la salida observada en la ejecución proporcionada.

Obtener la primera fila de un DataFrame de pandas con la propiedad pandas.DataFrame.iloc

pandas.DataFrame.iloc selecciona filas y columnas por posición entera. La posición 0 corresponde a la primera fila, independientemente de su etiqueta de índice. Al seleccionar una fila con df.iloc[0], se obtiene una Series cuyo índice contiene los nombres de las columnas del DataFrame. Usa df.iloc[0, 1] para seleccionar un único valor en la posición de fila 0 y la posición de columna 1.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.iloc[0]
print(first_row)
C_1      A
C_2     40
C_3    430
Name: 0, dtype: object

Elige esta opción cuando te resulte práctico usar una Series para cálculos posteriores o para acceder a los valores por nombre de columna. Para conservar la forma bidimensional de un DataFrame, usa df.iloc[[0]] o uno de los métodos siguientes.

Obtener la primera fila de un DataFrame de pandas con el método pandas.DataFrame.head()

pandas.DataFrame.head(n) devuelve las primeras n filas como un DataFrame. Pasa 1 para conservar solo la primera fila, junto con la estructura de columnas y su etiqueta de índice. Suele ser la opción más clara cuando el código posterior espera un DataFrame.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.head(1)
print(first_row)
  C_1  C_2  C_3
0   A   40  430

La diferencia clave está en la forma del resultado: df.iloc[0] es un objeto unidimensional, mientras que df.head(1) sigue siendo un DataFrame.

Obtener la primera fila de un DataFrame de pandas que cumpla la condición especificada

Filtra las filas antes de seleccionar la primera coincidencia. En este ejemplo, la condición es C_2 < 40 y C_3 > 450; la primera fila que cumple ambos criterios tiene la etiqueta 1. La máscara booleana pone cada comparación entre paréntesis porque & combina las dos condiciones.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 500, 350],
    }
)

matches = df[(df["C_2"] < 40) & (df["C_3"] > 450)]
first_match = matches.head(1)
print(first_match)
  C_1  C_2  C_3
1   B   34  980

Si ninguna fila coincide, head(1) devuelve un DataFrame vacío. Si cuando hay una coincidencia necesitas una sola Series, selecciónala con matches.iloc[0]; comprueba primero matches.empty cuando sea posible que no haya coincidencias.

El método query() expresa el mismo filtro como una cadena y puede resultar práctico para escribir expresiones legibles con nombres de columnas. Mantén el predicado igual que en el ejemplo con filtrado booleano:

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 500, 350],
    }
)

matches = df.query("(C_2 < 40) & (C_3 > 450)")
first_match = matches.head(1)
print(first_match)
  C_1  C_2  C_3
1   B   34  980

Para usar valores de variables de Python, escribe @variable en una expresión de query(). Por ejemplo, puedes hacer referencia a limit = 40 con df.query("C_2 < @limit").

Obtener la primera fila de un DataFrame de pandas con el método pandas.DataFrame.take()

pandas.DataFrame.take() selecciona filas por posición cuando se usa el eje de filas predeterminado. Pasa [0] para seleccionar la primera fila como un DataFrame de una fila y conservar su etiqueta de índice original.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.take([0])
print(first_row)
  C_1  C_2  C_3
0   A   40  430

Usa take() cuando ya tengas una lista de posiciones de filas. Para seleccionar simplemente la primera fila, head(1) o iloc[[0]] pueden expresar la intención con mayor claridad.

Obtener la primera fila de un DataFrame de pandas mediante slicing

El segmento df[:1] selecciona las filas desde el principio hasta la posición 1, sin incluirla. Devuelve un DataFrame y conserva la etiqueta de índice de la fila seleccionada.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df[:1]
print(first_row)
  C_1  C_2  C_3
0   A   40  430

Conclusión

Usa df.iloc[0] si quieres obtener una Series y df.head(1), df.iloc[[0]], df.take([0]) o df[:1] si quieres un DataFrame de una fila. Para obtener la primera fila que cumpla ciertos criterios, aplica una condición booleana o query() y luego selecciona la primera fila filtrada. Si puede no haber coincidencias, comprueba matches.empty antes de indexar.