web-dev-qa-db-ja.com

値がpysparkの文字列の一部と一致する場合にdfをフィルタリングする

大きなpyspark.sql.dataframe.DataFrameがあり、filter列に保存されたURLに事前に決定された文字列が含まれるすべての行を保持します(したがってlocation)。 'Google COM'。

df.filter(sf.col('location').contains('google.com')を試しましたが、これは

TypeError: _TypeError: 'Column' object is not callable'

どうやってdfを適切にフィルタリングしますか?事前に感謝します!

27
gaatjeniksaan

filterplain SQLを使用できます。

df.filter("location like '%google.com%'")

またはDataFrame列メソッドを使用

df.filter(df.location.like('%google.com%'))
52
mrsrinivas

pyspark.sql.Column.contains() は、pysparkバージョン2.2以降でのみ使用可能です。

df.where(df.location.contains('google.com'))

文字列値でDataFrameをフィルタリングするとき、データに "foo"や "Foo"のような列エントリがある場合、pyspark.sql.functionslowerupperが便利であることがわかります。

import pyspark.sql.functions as sql_fun
result = source_df.filter(sql_fun.lower(source_df.col_name).contains("foo"))
0
caffreyd