如何过滤pyspark中列表中值的列?

LKA*_*LKA 6 apache-spark apache-spark-sql pyspark spark-dataframe pyspark-sql

我有一个数据帧rawdata,我必须在列X上应用值CB,CI和CR的过滤条件.所以我使用了以下代码:

df = dfRawData.filter(col("X").between("CB","CI","CR"))
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

在()之间取3个参数(4个给定)

请告诉我如何解决此问题.

Sha*_*ica 18

between用于检查值是否在两个值之间,输入是下限和上限.它不能用于检查列值是否在列表中.为此,请使用isin:

df = dfRawData.where(col("X").isin({"CB", "CI", "CR"}))
Run Code Online (Sandbox Code Playgroud)

  • 扩展@Shaido 的答案。如果你想否定该语句,可以使用`~`符号,如下所示:`df = dfRawData.where(~f.col("X").isin(["CB", "CI", "CR"] ))` (4认同)