在 Dataframe 上使用 where() 或 filter() 时出错
Getting error when using where() or filter() on Dataframe
我想检查 Dataframe 列 first_id
中的值是否在我拥有的 python id 列表中,如果是,那么它应该通过过滤器。
first_id_list = [1,2,3,4,5,6,7,8,9]
other_ids = id_dataframe.where(ids["first_id"] in first_id_list).select("other_id")
我在 python 中写作,id_dataframe
是一个 PySpark 数据框,first_id_list
是一个 python 整数列表。
我得到的错误是:
ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
这个表达式有问题:ids["first_id"] in first_id_list
ids["first_id"]
是一个 Pyspark 专栏。 first_id_list
是一个 Python 列表。
where()
Pyspark Dataframe 方法需要一个布尔列来计算,但你给它一个错误的 python 布尔表达式。
您必须使用 Pyspark 列方法 isin()
(文档:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.Column.isin)
答案:
other_ids = id_dataframe.where(ids["first_id"].isin(first_id_list)).select("other_id")
现在 ids["first_id"].isin(first_id_list)
是一个返回布尔列的 DataFrame 布尔表达式。
我想检查 Dataframe 列 first_id
中的值是否在我拥有的 python id 列表中,如果是,那么它应该通过过滤器。
first_id_list = [1,2,3,4,5,6,7,8,9]
other_ids = id_dataframe.where(ids["first_id"] in first_id_list).select("other_id")
我在 python 中写作,id_dataframe
是一个 PySpark 数据框,first_id_list
是一个 python 整数列表。
我得到的错误是:
ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
这个表达式有问题:ids["first_id"] in first_id_list
ids["first_id"]
是一个 Pyspark 专栏。 first_id_list
是一个 Python 列表。
where()
Pyspark Dataframe 方法需要一个布尔列来计算,但你给它一个错误的 python 布尔表达式。
您必须使用 Pyspark 列方法 isin()
(文档:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.Column.isin)
答案:
other_ids = id_dataframe.where(ids["first_id"].isin(first_id_list)).select("other_id")
现在 ids["first_id"].isin(first_id_list)
是一个返回布尔列的 DataFrame 布尔表达式。