Python: Cómo pasar método siguiente fila DataFrame.apply () y la fila?

votos
0

Tengo trama de datos con miles de filas. Su estructura es la siguiente

     A    B    C     D 
 0   q   20    'f'
 1   q   14    'd'
 2   o   20    'a'

Quiero comparar la columna A de la fila actual y la fila siguiente. Si los valores son iguales Quiero añadir el valor de la columna B que tiene reducir el valor de la columna D de la fila comparación que tiene mayor valor. Entonces quiero quitar el valor de la columna movida de la columna B. Es como un proceso de intercambio.

    A    B    C     D 
0   q   20    'f'   14
1   o   20    'a'

Tengo miles de filas y iLoc, loc, en los métodos de trabajo lento. Por lo menos quiero usar trama de datos se aplica el método. Probé algunos ejemplos de código, pero que no funcionó.

Quiero hacer algo de la siguiente manera: DataFrame.apply (fila lambda: self.compare (fila, al lado (fila)), eje = 1))

Tengo un método de comparación, pero no podía dejar pasar la fila siguiente al método de comparación. ¿Cómo puedo pasar al método? También estoy abierto a escuchar las soluciones más rápido pandas.

Publicado el 19/03/2020 a las 21:58
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Mejor que no lo haga con apply, ya que será lenta; se puede buscar en el uso shift, por ejemplo,

df['A_shift'] = df['A'].shift(1)
df['Is_Same'] = 0
df.loc[df.A_shift == df.A, 'Is_Same'] = 1

Se pone un poco más complicado, si está haciendo el cambio dentro de los grupos, pero aún es posible.

Respondida el 19/03/2020 a las 22:03
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more