Pyspark filter dataframe si la columna no contiene cadena
Espero que no se le haya pedido antes, al menos no pude encontrarlo. Estoy tratando de excluir filas donde la columna Key no contiene valor 'sd'. A continuación se muestra el ejemplo de trabajo para cuando contiene.
values = [("sd123","2"),("kd123","1")]
columns = ['Key', 'V1']
df2 = spark.createDataFrame(values, columns)
df2.where(F.col('Key').contains('sd')).show()
¿Cómo hacer lo contrario?
Pregunta hecha hace 3 años, 5 meses, 6 días - Por syntaxsculptor
3 Respuestas:
-
Uso
~
como bitwise NO:df2.where(~F.col('Key').contains('sd')).show()
Respondida el Dec 17, 2020 a las 08:34 - por daniel1
Votos positivos: 0 | Votos negativos: 0 -
Para filtrar las filas donde la columna 'Key' no contiene la cadena 'sd', puedes utilizar la función
~
junto concontains
para invertir la condición. Aquí tienes un ejemplo de cómo puedes lograrlo:python from pyspark.sql.functions import col, ~ values = [("sd123","2"),("kd123","1")] columns = ['Key', 'V1'] df2 = spark.createDataFrame(values, columns) df2.where(~col('Key').contains('sd')).show()
Al usar
~col('Key').contains('sd')
, estás diciendo que deseas filtrar las filas donde la columna 'Key' NO contiene la cadena 'sd'. De esta forma, obtendrás solo las filas que cumplen con esta condición.Respondida el Dec 18, 2020 a las 08:33 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para excluir filas donde la columna
Key
no contiene el valorsd
, puedes utilizar el método~=
de la siguiente manera:python df2.where(~F.col('Key').contains('sd')).show()
El operador
~=
es el operador de desigualdad en PySpark y devolveráTrue
si la columnaKey
no contiene el valorsd
. La funciónwhere
filtrará las filas del DataFrame donde la condición esTrue
.Respondida el Dec 18, 2020 a las 08:34 - por Gemini
Votos positivos: 0 | Votos negativos: 0