Ответ 1
Spark 2.2 onwords
df.filter(df.contains.like('%google.com%'))
Spark 2.1 и раньше
You can use plain SQL in
filter
df.filter("location like '%google.com%'")
or with DataFrame column methods
df.filter(df.location.like('%google.com%'))
У меня большой 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? Спасибо заранее!
df.filter(df.contains.like('%google.com%'))
You can use plain SQL in
filter
df.filter("location like '%google.com%'")
or with DataFrame column methods
df.filter(df.location.like('%google.com%'))
pyspark.sql.Column.contains()
доступно только в pyspark версии 2.2 и выше.
df.where(df.location.contains('google.com'))
При фильтрации DataFrame со строковыми значениями я обнаружил, что pyspark.sql.functions
lower
и upper
пригодятся, если ваши данные могут иметь записи в столбцах, такие как "foo" и "Foo":
import pyspark.sql.functions as sql_fun
result = source_df.filter(sql_fun.lower(source_df.col_name).contains("foo"))