Spark 中 IF then ELSE 的等价物

2024-01-01

我早些时候在这里看到过这个问题,并从中吸取了教训。但是,我不确定为什么当我认为它应该起作用时会出现错误。

我想在现有 Spark 中创建一个新列DataFrame通过一些规则。这是我写的。 iris_spark 是具有分类变量 iris_spark 的数据框,该变量具有三个不同的类别。

from pyspark.sql import functions as F

iris_spark_df = iris_spark.withColumn(
    "Class", 
   F.when(iris_spark.iris_class == 'Iris-setosa', 0, F.when(iris_spark.iris_class == 'Iris-versicolor',1)).otherwise(2))

抛出以下错误。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-157-21818c7dc060> in <module>()
----> 1 iris_spark_df=iris_spark.withColumn("Class",F.when(iris_spark.iris_class=='Iris-setosa',0,F.when(iris_spark.iris_class=='Iris-versicolor',1)))

TypeError: when() takes exactly 2 arguments (3 given)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-157-21818c7dc060> in <module>()
----> 1 iris_spark_df=iris_spark.withColumn("Class",F.when(iris_spark.iris_class=='Iris-setosa',0,F.when(iris_spark.iris_class=='Iris-versicolor',1)))

TypeError: when() takes exactly 2 arguments (3 given)

知道为什么吗?


正确的结构是:

(when(col("iris_class") == 'Iris-setosa', 0)
.when(col("iris_class") == 'Iris-versicolor', 1)
.otherwise(2))

这相当于

CASE 
    WHEN (iris_class = 'Iris-setosa') THEN 0
    WHEN (iris_class = 'Iris-versicolor') THEN 1 
    ELSE 2
END

or:

(when(col("iris_class") == 'Iris-setosa', 0)
    .otherwise(when(col("iris_class") == 'Iris-versicolor', 1)
        .otherwise(2)))

这相当于:

CASE WHEN (iris_class = 'Iris-setosa') THEN 0 
     ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 
               ELSE 2 
          END 
END

使用一般语法:

when(condition, value).when(...)

or

when(condition, value).otherwise(...)

你可能把 Hive 搞混了IF有条件:

IF(condition, if-true, if-false)

它只能在具有 Hive 支持的原始 SQL 中使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 中 IF then ELSE 的等价物 的相关文章

  • 没有任何元数据的 zip 文件

    我想找到一种简单的方法来压缩一堆文件 而无需任何文件元数据 例如时间戳 这zip命令似乎总是保留元数据 我没有找到禁用元数据的方法 我希望解决方案是一个命令或最多一个 python 脚本 谢谢 正如一些帖子已经指出的那样 zip 标头中的大
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • on_delete=models.PROTECT 和 on_delete=models.CASCADE 在 Django 模型上有什么作用?

    我对 Django 很熟悉 但最近注意到有一个on delete models CASCADE and on delete models PROTECT模型的选项 on delete models CASCADE and on delete
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 如何在 Python 中将彩色输出打印到终端?

    是否有与 Perl 等效的 Python 语言 print color red print
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • Python 中的 @staticmethod 与 @classmethod

    方法和方法有什么区别装饰的 https peps python org pep 0318 with staticmethod http docs python org library functions html staticmethod和
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • 如何有效地从 loadmat 函数生成的嵌套 numpy 数组中提取值?

    python中是否有更有效的方法从嵌套的python列表中提取数据 例如A array array 12000000 dtype object 我一直在使用A 0 0 0 0 当你有很多像 A 这样的数据时 这似乎不是一个有效的方法 我也用
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • Python 3.2 中 **kwargs 和 dict 有什么区别?

    看起来Python的很多方面都只是功能的重复 除了我在 Python 中的 kwargs 和 dict 中看到的冗余之外 还有什么区别吗 参数解包存在差异 许多人使用kwargs 并通过dict作为论据之一 使用参数解包 Prepare f
  • 如何在sphinx中启用数学?

    我在用sphinx http sphinx pocoo org index html与pngmath http sphinx pocoo org ext math html module sphinx ext pngmath扩展来记录我的代
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide
  • 来自 django 教程 was_published_recently.admin_order_field = 'pub_date'

    From Django 教程 https www jetbrains com help pycharm 2017 1 creating and running your first django project html d28041e21
  • 与文件名中的冒号“:”作斗争

    我有以下代码 用于加载大量 csv gz 并将它们转储到其他文件夹中 并将源文件名作为一列 object DailyMerger extends App def allFiles path File List File val parts

随机推荐

  • Firebase 中的开发计划很容易“DoSsable”?

    firebase 中的开发计划有 50 个连接 的硬性限制 连接是与我们的服务器的开放网络连接 它衡量同时使用您的应用程序或网站的用户数量 这意味着 向我的应用程序打开 2 个浏览器选项卡的用户将使用 2 个保持打开状态的连接 直到他关闭选
  • 如何在对象类中调用 .render 和 .animate 函数?

    这是我寻找答案的第七天 我想写一个简单的游戏 我想调用一个对象 我的想法是我想要一个模块化游戏 所以我以通常的方式调用场景和所有这些 main js var scene controls camera renderer var SCREEN
  • msysgit sh.exe 参数

    我正在尝试找到一些有关 msysgit sh exe 命令的文档 例如我知道 login标记启动 git bash 会话 但我想知道其他可能性 我浏览过互联网 但找不到任何列出所有可能参数的地方 gt sh exe help GNU bas
  • 如何从 Linux 内核中的 struct dentry 获取完整路径名

    我正在编写自己的内核模块来捕获vfs mkdir struct inode struct dentry int 内核函数调用并尝试记录发生此调用的磁盘路径名 我想使用dentry path转换的核函数struct dentry 到一个路径名
  • Next.js 以线性渐变为背景的图像组件

    在开发我的登陆页面 使用 next js 时 我决定使用这行代码作为一个部分的背景 background image linear gradient to bottom rgb 123 8 255 0 9 rgb 123 8 255 0 8
  • 如何在 AngularJS 1.x 组件中验证表单

    我有一个表单 其字段位于组件内部 现在我想验证这些字段 问题是 我的消息没有显示 该模式也没有任何效果 我试图在这个的帮助下修复它post https stackoverflow com questions 36981037 passing
  • 如何使用 io-ts 验证数组长度?

    我正在研究一个io ts https github com gcanti io ts验证我想验证列表长度 它必须在最小值和最大值之间 我想知道是否有办法实现这种行为 因为它在运行时进行 API 端点验证时非常方便 到目前为止我所拥有的是 i
  • 免费 XML 格式化工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 查询返回错误值?

    感谢 zamboni 给我的帮助编写适用于整个数据库而不是表的查询 https stackoverflow com questions 46086616 write a query that applies to an entire db
  • 为什么 redisTemplate.opsForValue().get() 总是不为 null?

    I use Autowired private RedisTemplate redisTemplate and redisTemplate opsForValue get key IDE 给我一个警告 告诉我结果始终不为空 但我看到方法 V
  • 如何暂时禁用 Visual Studio 自动生成的事件?

    All 我已经完成了 GUI 设计阶段 现在我开始为应用程序中的所有控件添加有意义的名称 每次我单击控件更改其名称时 Visual Studio 都会让我发疯 自动生成事件 好吧 只有当我搞砸并双击时才会发生这种情况 但仍然很烦人 有没有办
  • 如何在 SQL 中使用多个 LEFT JOIN?

    sql查询中是否可以使用多个左连接 LEFT JOIN ab ON ab sht cd sht 我想添加一个这样的查询 会起作用吗 LEFT JOIN ab AND aa ON ab sht cd sht AND aa sht cc sht
  • 改变轴样式python

    我正在用 python 绘制一个简单的指数衰减 cos 曲线图 代码如下 代码实际运行没有问题 我只是想知道是否有办法改变python显示图形的方式 而不是像这样被轴包围this https i stack imgur com KBtt4
  • Angularjs 和 Angular 之间的区别[重复]

    这个问题在这里已经有答案了 Angularjs 和 Angular 例如 cli 和版本 之间有什么区别 我想使用 Angular 但我不知道选择其中之一有何区别 我用谷歌搜索但没有明确提及它们之间的差异 AngularJS是第一个版本An
  • 不支持 Last 和 LastOrDefault

    我正在尝试获取列表中的第一个和最后一个值 查询运算符First 受支持 但是Last and LastOrDefault 给出一个错误 我使用的是Last 操作员错误 var purchaseBills db PurchaseBills O
  • 从长度超过 N 个字符的文本中提取单词 - RegEx/Java/Android [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的第一个要求是使用 Java 中的正则表达式从某些文本中提取所有单词 以下代码对我来说非常完美 String words text sp
  • 从android webview中的base64 url​​下载文件

    我正在编写一个 webview 应用程序 在其中我可以从 html 标签 url 下载文件到设备 我可以下载 png jpg pdf 等文件 但是当 url 是 base64 字符串值时我不知道如何下载它 有人可以帮助我实现这一目标吗 例如
  • AS3 setChildIndex 到前面

    有没有办法将特定的 movieClip 发送到舞台上所有其他 movieClip 的前面 我知道 setChildIndex 但我无法找到动态计算顶部位置的方法 您可以使用setChildIndex with numChildren set
  • Google Places API:“place_id”或“id”对于世界上的任何城市来说都是唯一的吗?

    当对某个位置执行自动完成 API 调用时 我请求来自 google 的 JSON 响应 id 和 place id 字符串有什么区别 这两个ID是世界上任何一个城市所独有的吗 谷歌地点是否为世界上的每个城市分配一个ID 例如 Somers
  • Spark 中 IF then ELSE 的等价物

    我早些时候在这里看到过这个问题 并从中吸取了教训 但是 我不确定为什么当我认为它应该起作用时会出现错误 我想在现有 Spark 中创建一个新列DataFrame通过一些规则 这是我写的 iris spark 是具有分类变量 iris spa