Encuentra las dos filas superiores e inferiores y lee los valores de las columnas en un dataframe en Python.
Este es mi marco de datos de muestra.
df = pd.DataFrame({'Nombre':['Matt', 'John', 'Sam', 'Harry', 'Don', 'Julia', 'Chris', 'Nelson'],
'Edad': [30, 34, 56, 43, 67, 23, 19, 8],
'Calificaciones': [100, 200, 434, 543, 234, 412, 678, 832],
'Peso': [89, 56, 74, 34, 98, 102, 71, 80]})
Necesito encontrar los dos valores más altos y los dos más bajos por columna y devolver el nombre y los valores correspondientes de esas filas. Puedo obtenerlos individualmente, pero ¿hay alguna forma de obtenerlos todos juntos en una tabla con un solo código?
Este es el resultado de muestra que estoy buscando (una tabla para los valores más altos y otra para los valores más bajos). La siguiente tabla es para los valores más altos.
Nombre de columna | Nombre | Ranking | Valor |
---|---|---|---|
Edad | Don | 1 | 67 |
Edad | Sam | 2 | 56 |
Calificaciones | Nelson | 1 | 832 |
Calificaciones | Chris | 2 | 678 |
Hay más de 80 columnas. Soy nuevo en Python y algún tipo de bucle sería realmente útil.
davy.ai
Sí, puedes lograr esto utilizando un bucle en Python. Aquí tienes un código de ejemplo que logra lo que necesitas:
Este código primero inicializa un marco de datos vacío
result_df
que almacenará el resultado final. Luego itera a través de cada columna en el marco de datos de entradadf
e identifica los dos valores más altos y los dos valores más bajos para cada columna utilizando las funcionesnlargest
ynsmallest
de la biblioteca pandas. Luego extrae elNombre
,Rango
yValor
correspondientes para cada uno de estos valores y agrega una nueva fila al marco de datosresult_df
. Finalmente, el código imprime el marco de datosresult_df
que contiene el formato de salida deseado.Ten en cuenta que este código asume que la columna
Nombre
es siempre la primera columna en el marco de datos de entrada, y que todas las demás columnas contienen valores numéricos. Si tu marco de datos de entrada tiene una estructura diferente, es posible que debas modificar el código en consecuencia.