首页 > 后端开发 > Python教程 > 如何在 Spark DataFrames 中实现'IF THEN ELSE”逻辑?

如何在 Spark DataFrames 中实现'IF THEN ELSE”逻辑?

Patricia Arquette
发布: 2024-11-19 12:06:02
原创
890 人浏览过

How to Implement

Spark 相当于“IF then ELSE”

简介:

Spark DataFrame 转换提供操纵数据的强大方法。一种常见的操作涉及根据变量值有条件地应用转换。了解 Spark 中相当于 SQL 中的“IF then ELSE”语句对于此类任务至关重要。

问题:

用户正在尝试将新列添加到基于条件规则的 Spark DataFrame。然而,当尝试在多个条件下使用 F.when 函数时,他们会遇到 TypeError。

TypeError: when() takes exactly 2 arguments (3 given)
登录后复制

答案:

发生错误是因为 F.when Spark 中的函数需要两个参数:一个条件和满足条件时返回的值。用户的代码包含一个附加参数,即另一个 F.when 条件,这是不正确的语法。

Spark 中使用 F.when 的“IF then ELSE”等效项的正确语法是:

(when(col("iris_class") == 'Iris-setosa', 0)
.when(col("iris_class") == 'Iris-versicolor', 1)
.otherwise(2))
登录后复制

or:

(when(col("iris_class") == 'Iris-setosa', 0)
    .otherwise(when(col("iris_class") == 'Iris-versicolor', 1)
        .otherwise(2)))
登录后复制

第一个语法使用嵌套的 F.when 条件,而第二个语法使用 F.otherwise 函数。

等效的 SQL 语句将是 CASE 表达式:

CASE WHEN (iris_class = 'Iris-setosa') THEN 0 
     ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 
               ELSE 2 
          END 
END
登录后复制

Spark 还支持 Hive IF 条件语法,但仅限于支持 Hive 的原始 SQL:

IF(condition, if-true, if-false)
登录后复制

以上是如何在 Spark DataFrames 中实现'IF THEN ELSE”逻辑?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板