es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Identificación de cadenas específicas y verificación de filas posteriores en busca de otra cadena.

Tengo el siguiente DataFrame.

df = pd.DataFrame({'1': ['A', '.', '.', 'X', '.', '.'],
                   '2': ['.', '.', '.', '.', 'A', '.'],
                   '3': ['.', '.', '.', '.', '.', '.'],
                   '4': ['.', '.', '.', '.', '.', 'X']})

Quiero identificar todas las instancias en las que ocurre ‘A’ y verificar si ‘X’ ocurre dentro de las próximas 3 filas.

Después de eso, me gustaría ejecutar un comando basado en estas condiciones.

Un ejemplo de lo que estoy tratando de hacer sería…

for i, idx in df.iterrows():
    if idx == 'A':
        if 'X' existe dentro de las próximas 3 filas:
            x = idx['1']
            y = idx['2']

Agradecería mucho cualquier ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para identificar todas las instancias en las que ocurre ‘A’ y verificar si ‘X’ ocurre en las próximas 3 filas, puedes usar el siguiente código:

    for i, row in df.iterrows(): # iterar a través de cada fila del dataframe
        if 'A' in row.values: # verificar si 'A' está en la fila actual
            for j in range(i+1, min(i+4,len(df))): # recorrer las próximas 3 filas
                if 'X' in df.iloc[j].values: # verificar si 'X' está en las próximas 3 filas
                    x = row['1'] 
                    y = row['2']
                    # ejecuta aquí tu comando basado en las condiciones
    

    Este código primero itera a través de cada fila del dataframe utilizando df.iterrows(). Luego verifica si ‘A’ está en la fila actual utilizando if 'A' in row.values. Si se encuentra ‘A’, luego recorre las siguientes 3 filas utilizando for j in range(i+1, min(i+4,len(df))). El min(i+4,len(df)) se utiliza para asegurarse de no exceder los límites si el último ‘A’ está cerca del final del dataframe. Luego verifica si ‘X’ está en cada una de las siguientes 3 filas utilizando if 'X' in df.iloc[j].values. Si se encuentra ‘X’, extrae los valores de las columnas ‘1’ y ‘2’ para la fila actual utilizando x = row['1'] y y = row['2']. Luego puedes ejecutar tu comando aquí basado en las condiciones.

    Ten en cuenta que este código asume que solo hay un ‘A’ por fila y que ‘A’ y ‘X’ solo están presentes en las columnas ‘1’ y ‘2’. Si tu dataframe tiene nombres de columnas diferentes o contiene múltiples ‘A’ por fila, deberás modificar el código en consecuencia.

Comments are closed.