Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

326
Vistas
los pandas encuentran el punto de inicio y parada de valores no nulos

Me gustaría encontrar los puntos de inicio y finalización de una columna y marcarlos como se muestra a continuación:

valor bandera
Yaya Yaya
Yaya Yaya
1 comienzo
2 Yaya
1 Yaya
3 Yaya
2 detener
Yaya Yaya
1 comienzo
2 detener
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

  • el start ocurre cuando el valor actual no es notnull y el valor anterior es isnull
  • la stop ocurre cuando el valor actual no es notnull y el siguiente valor isnull

Genere estas condiciones usando shift y asigne usando loc :

 start = df.value.notnull() & df.value.shift().isnull() stop = df.value.notnull() & df.value.shift(-1).isnull() df.loc[start, 'flag'] = 'start' df.loc[stop, 'flag'] = 'stop' # value flag # 0 NaN NaN # 1 NaN NaN # 2 1.0 start # 3 2.0 NaN # 4 1.0 NaN # 5 3.0 NaN # 6 2.0 stop # 7 NaN NaN # 8 1.0 start # 9 2.0 stop

Alternativamente, asigne usando mask :

 df['flag'] = df['flag'].mask(start, 'start') df['flag'] = df['flag'].mask(stop, 'stop')
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí recorrí las filas y usé una bandera para indicar si estábamos comenzando o no.

 start_flag = 0 for index, row in df.iterrows(): if row['val'].isnull(): df.loc[index, 'flag'] = "NaN" start_flag = 0 else: if start_flag == 0: df.loc[index, 'flag'] = "start" start_flag = 1 else: if (index < df.shape[0]-1 and df.loc[index+1, 'val'].isnull()) or index == df.shape[0]-1: df.loc[index, 'flag'] = "stop"
over 4 years ago · Santiago Trujillo Denunciar

0

Esto es lo que necesitas:

 # Auxiliar columns to detect start and end df['Past'] = df['Value'].shift(-1) df['Future'] = df['Value'].shift(1) # Auxiliar function to complete new column def Find_start_stop_Null(row): flag = np.nan if ((not pd.isnull(row['Value'])) and (pd.isnull(row['Future']))): flag = 'start' elif ((not pd.isnull(row['Value'])) and (pd.isnull(row['Past']))): flag = 'stop' return flag df['flag'] = df.apply(lambda row: Find_start_stop_Null(row), axis=1) # Drop unnecessary columns df = df.drop('Past', axis=1) df = df.drop('Future', axis=1)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda