Pyspark dataframe LIKE运算符

问题描述 投票:14回答:8

Pyspark for LIKE运算符的等效项是什么?例如,我想这样做:

SELECT * FROM table WHERE column LIKE "*somestring*";

寻找类似这样的简单操作(但这不起作用):

df.select('column').where(col('column').like("*s*")).show()
pyspark spark-dataframe
8个回答
28
投票

您可以使用wherecol功能执行相同的操作。 where将用于根据条件过滤数据(在此情况下,如果列类似于'%string%',则为col('col_name'))。 like用于表示条件,df.where(col('col1').like("%string%")).show() 是运算符:

df.select('column').where("column like '%s%'").show()

7
投票

4
投票

使用like运算符。

df.filter(df.column.like('%s%')).show()

df.select('column').where(col('column').like("%s%")).show()

2
投票

嗯...应该有像regexp这样的sql->

df.registerTempTable('my_table')
query = """SELECT * FROM my_table WHERE column LIKE '*somestring*'"""
sqlContext.sql(query).show()

2
投票

在pyspark中,您始终可以将数据框注册为表并进行查询。

ILIKE

1
投票

要复制不区分大小写的lower,可以将likefrom pyspark.sql.functions import lower df.where(lower(col('col1')).like("%string%")).show() 结合使用。

spark 2.4

0
投票

使用spark 2.4,您可以简单地执行否定操作:

df = df.filter("column not like '%bla%'")

-1
投票

我总是使用UDF来实现这种功能:

from pyspark.sql import functions as F 
like_f = F.udf(lambda col: True if 's' in col else False, BooleanType())
df.filter(like_f('column')).select('column')
© www.soinside.com 2019 - 2024. All rights reserved.