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.