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, 4 meses, 29 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 con contains 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 valor sd, 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 columna Key no contiene el valor sd. La función where filtrará las filas del DataFrame donde la condición es True.

    Respondida el Dec 18, 2020 a las 08:34 - por Gemini

    Votos positivos: 0 | Votos negativos: 0