Ich habe einen großen pyspark.sql.dataframe.DataFrame
Und möchte (also filter
) alle Zeilen behalten, in denen die in der Spalte location
gespeicherte URL eine vorgegebene Zeichenfolge enthält, z. "google.com".
Ich habe df.filter(sf.col('location').contains('google.com')
ausprobiert, aber das wirft a
TypeError: _TypeError: 'Column' object is not callable'
Wie gehe ich herum und filtere meinen df richtig? Vielen Dank im Voraus!
Sie können einfaches SQL in filter
verwenden.
df.filter("location like '%google.com%'")
oder mit DataFrame-Spaltenmethoden
df.filter(df.location.like('%google.com%'))
pyspark.sql.Column.contains()
ist nur in Pyspark Version 2.2 und höher verfügbar.
df.where(df.location.contains('google.com'))
Beim Filtern eines DataFrames mit Zeichenfolgenwerten stelle ich fest, dass pyspark.sql.functions
lower
und upper
sind nützlich, wenn Ihre Daten Spalteneinträge wie "foo" und "Foo" enthalten könnten:
import pyspark.sql.functions as sql_fun
result = source_df.filter(sql_fun.lower(source_df.col_name).contains("foo"))