¿Cómo regresar 3 columnas encima y debajo de la celda especificada en un dataframe de pandas?
Este es mi marco de datos. Si busco Iowa, el código debería devolver el nombre del país (EE. UU. en este caso) y 3 estados por encima de él (Hawaii, California, Missouri)-Iowa- y 3 por debajo (Colorado, Alaska, Texas en este caso). ¿Cómo hacer esto?
País | Estados |
---|---|
India | Bangalore |
Pune | |
Delhi | |
Maharashtra | |
Hyderabad | |
Gujarat | |
EE. UU. | Arizona |
Hawaii | |
California | |
Missouri | |
Iowa | |
Colorado | |
Alaska | |
Texas |
davy.ai
Para obtener la salida deseada, primero necesitamos filtrar el dataframe según el estado de entrada, que es Iowa en este caso. Luego, podemos rebanar el dataframe filtrado para obtener los 3 estados arriba y abajo de Iowa mediante los valores del índice. Aquí está el código para hacer eso:
En el código anterior, primero filtramos el dataframe
df
según el estado de entrada usando la indexación booleana. Esto crea un nuevo dataframefiltered_df
que solo contiene filas donde la columnaStates
coincide con el estado de entrada.A continuación, obtenemos el valor de índice del estado de entrada del dataframe filtrado usando el atributo
index
y tomando el primer valor ya que solo tenemos una fila en el dataframe filtrado.Finalmente, rebanamos el dataframe original
df
utilizando los valores de índice calculados en función del estado de entrada. Usamos las funcionesmax
ymin
para asegurarnos de que no salimos de los límites al obtener los 3 estados arriba y abajo del estado de entrada. El dataframe resultanteoutput_df
contiene la salida deseada: el nombre del país (EE. UU.) y 3 estados arriba y abajo de Iowa.