Cómo eliminar todas las filas debajo de una coincidencia de cadena en un dataframe.
Tengo un dataframe y solo me interesa los datos por encima del texto de cadena = “purchase” por sesión.
sesión | Fecha | acción | flag_compra |
---|---|---|---|
T001 | 01-01-2021 00.01 | clic | 1 |
T001 | 01-01-2021 00.15 | reproducción | 1 |
T001 | 01-01-2021 02.15 | pausa | 1 |
T001 | 01-01-2021 03.15 | reproducción | 1 |
T001 | 01-01-2021 04.15 | compra | 1 |
T001 | 02-01-2021 10.15 | reproducción | 1 |
T001 | 02-01-2021 12.00 | pausa | 1 |
T001 | 02-01-2021 13.15 | reproducción | 1 |
T002 | 01-01-2021 00.01 | reproducción | 0 |
T002 | 03-01-2021 00.15 | reproducción | 0 |
T002 | 03-01-2021 02.15 | pausa | 0 |
T002 | 03-01-2021 03.15 | reproducción | 0 |
Quiero eliminar todas las filas por debajo de la acción = “compra”. Si todas las acciones en la sesión no tienen coincidencias de texto, se mantendrán todas las filas, por lo que la salida que deseo se ve así:
sesión | Fecha | acción | flag_compra |
---|---|---|---|
T001 | 01-01-2021 00.01 | clic | 1 |
T001 | 01-01-2021 00.15 | reproducción | 1 |
T001 | 01-01-2021 02.15 | pausa | 1 |
T001 | 01-01-2021 03.15 | reproducción | 1 |
T001 | 01-01-2021 04.15 | compra | 1 |
T002 | 01-01-2021 00.01 | reproducción | 0 |
T002 | 03-01-2021 00.15 | reproducción | 0 |
T002 | 03-01-2021 02.15 | pausa | 0 |
T002 | 03-01-2021 03.15 | reproducción | 0 |
davy.ai
Para obtener el resultado deseado, podemos utilizar el siguiente código en Python utilizando pandas:
En el código anterior, primero leemos el dataframe de entrada desde un archivo CSV. Luego, creamos una máscara booleana utilizando
groupby
en la columnasession
y aplicamos una funciónlambda
que verifica si todos los valores deaction
en una sesión están por debajo del string “purchase”. Utilizamos el métodotransform
para aplicar esta función a cada grupo en la columnasession
. Finalmente, aplicamos la máscara al dataframe para mantener solo las filas relevantes y guardamos el dataframe final en un nuevo archivo CSV.