J'ai un grand pyspark.sql.dataframe.DataFrame
Et je veux conserver (donc filter
) toutes les lignes où l'URL enregistrée dans la colonne location
contient une chaîne prédéterminée, par exemple. "google.com".
J'ai essayé df.filter(sf.col('location').contains('google.com')
mais cela jette un
TypeError: _TypeError: 'Column' object is not callable'
Comment puis-je filtrer correctement mon DF? Merci d'avance!
Vous pouvez utiliser SQL pur dans filter
df.filter("location like '%google.com%'")
ou avec les méthodes de colonne DataFrame
df.filter(df.location.like('%google.com%'))
pyspark.sql.Column.contains()
est uniquement disponible dans les versions 2.2 et supérieures de pyspark.
df.where(df.location.contains('google.com'))
Lors du filtrage d'un DataFrame avec des valeurs de chaîne, je constate que le pyspark.sql.functions
lower
et upper
sont pratiques, si vos données peuvent avoir des entrées de colonne comme "foo" et "Foo":
import pyspark.sql.functions as sql_fun
result = source_df.filter(sql_fun.lower(source_df.col_name).contains("foo"))