比较 Pyspark 中的列

2023-12-24

我正在开发一个包含 n 列的 PySpark DataFrame。我有一组 m 列 (m

例如:

输入:PySpark DataFrame 包含:

col_1 = [1,2,3], col_2 = [2,1,4], col_3 = [3,2,5]

Ouput :

col_4 = max(col1, col_2, col_3) = [3,2,5]

pandas 中有类似的东西,如中所述this https://stackoverflow.com/questions/27474921/compare-two-columns-using-pandas问题。

在 PySpark 中是否有任何方法可以执行此操作,或者我应该将 PySpark df 转换为 Pandas df 然后执行操作?


您可以减少对列列表使用 SQL 表达式:

from pyspark.sql.functions import max as max_, col, when
from functools import reduce

def row_max(*cols):
    return reduce(
        lambda x, y: when(x > y, x).otherwise(y),
        [col(c) if isinstance(c, str) else c for c in cols]
    )

df = (sc.parallelize([(1, 2, 3), (2, 1, 2), (3, 4, 5)])
    .toDF(["a", "b", "c"]))

df.select(row_max("a", "b", "c").alias("max")))

Spark 1.5+还提供least, greatest

from pyspark.sql.functions import greatest

df.select(greatest("a", "b", "c"))

如果你想保留最大值的名称,你可以使用`structs:

from pyspark.sql.functions import struct, lit

def row_max_with_name(*cols):
    cols_ = [struct(col(c).alias("value"), lit(c).alias("col")) for c in cols]
    return greatest(*cols_).alias("greatest({0})".format(",".join(cols)))

 maxs = df.select(row_max_with_name("a", "b", "c").alias("maxs"))

最后,您可以使用上面的内容来查找选择“顶部”列:

from pyspark.sql.functions import max

((_, c), ) = (maxs
    .groupBy(col("maxs")["col"].alias("col"))
    .count()
    .agg(max(struct(col("count"), col("col"))))
    .first())

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

比较 Pyspark 中的列 的相关文章

随机推荐

  • postgres 函数和 BEGIN 事务

    我对 postgres 的功能和事务如何工作有一些疑问 目前我的函数如下所示 CREATE OR REPLACE FUNCTION test function some id character varying RETURNS charac
  • Golang Gin Set Cookie 未在浏览器中设置[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 所以我有一个托管在domainA com的后端golang gin api 我还有一个托管在domainB com的前端Next
  • HTML Agility Pack,在 HTML 文件中创建新行

    Dim codice As String Dim doc As New HtmlDocument Dim coll As HtmlNodeCollection Dim node As HtmlNode Dim nuovo As HtmlNo
  • 如何为没有区域设置属性的 NSFormatter 指定区域设置/语言?

    NSFormatter 有很多专门的子类 CNContactFormatter CNPostalAddressFormatter DRMSFFormatter MKDistanceFormatter NSByteCountFormatter
  • 压缩文件保留目录结构

    我正在使用 codeplex 中的 DotNetZip DLL http dotnetzip codeplex com 来压缩程序中的一些文件 我面临的问题是在压缩文件后 它保留了目录结构 当我提取 zip 文件时 所有父文件夹都会再次创建
  • Onclick CSS 按钮效果

    我正在创建一个 CSS 按钮 并尝试制作一个 onclick 效果 当用户单击该按钮时 它会将按钮文本下推 1px 我的问题是它按下了按钮的整个底部 你将如何进行 div class one p a href Button a p div
  • 从主要活动中禁用片段中的按钮

    我的片段中有 3 个按钮 我想从主要活动中禁用它们 我尝试在replace newfragment之前使用bundle选项 但它产生了其他问题 片段中的按钮可以投射到主要活动吗 像这样的东西 我收到错误无法投射 但我的输入不正确 RedUp
  • Babel 7 中的外部导入不会被转译

    我目前正在将代码库从 Babel 6 迁移到 7 该代码由多个具有自己配置的单独项目组成 The main项目从以下位置导入文件external然而脚本是从导入的external by main没有被转译并且在 意外的令牌导入 上失败 脚本
  • Angular ui 选项卡,每个选项卡都有单独的控制器

    我想制作一个引导选项卡集 每个选项卡都有自己的控制器 谁能指出我应该朝哪个方向走 目前我已经制作了几个不同的控制器 我希望在选项卡集中使用它们 而不是将它们显示为不同的路线 我知道我可以通过在不同的控制器模板中将选项卡集显示为活动的给定控制
  • 如何找到最佳的模糊字符串匹配?

    蟒蛇的新的正则表达式模块 https pypi python org pypi regex支持模糊字符串匹配 大声歌颂 现在 根据文档 The ENHANCEMATCH标志进行模糊匹配尝试以提高拟合度 它找到的下一个匹配项 The BEST
  • 获取用户输入的数字列表

    我尝试使用input Py3 raw input Py2 获取数字列表 但是使用代码 numbers input print len numbers 输入 1 2 3 and 1 2 3给出的结果是7 and 5分别 它似乎将输入解释为字符
  • 在Lua中,我可以轻松地选择第N个结果而不需要自定义函数吗?

    假设我将一个字符串插入到表中 如下所示 table insert tbl mystring 然后mystring通过将所有出现的 a 替换为 b 生成input mystring string gsub input a b 将两者合并为一个
  • 使用 JSON.NET 序列化/反序列化动态属性名称

    我有以下课程 public class MyRequest public string Type get set public string Source get set 我想序列化 反序列化以下值Source来自名为值的 JSON 字段T
  • java使用excel打开csv文件

    我正在为大学做一个项目 并制作了一个创建 csv 文件的程序 我希望有一个按钮 您可以单击该按钮 然后使用 Excel 打开 csv 文件 谢谢 知道系统上安装了 MsOffice 您应该能够使用以下命令从命令行打开文档 excel myD
  • Keycloak.loadUserProfile() 上的 Keycloak 403(禁止)

    我是 Keycloak 的新手 我尝试使用以下代码获取用户信息 keycloakAuth loadUserProfile success function profile debugger console log profile error
  • InvalidOperationException:无法为“角色”创建 DbSet,因为该类型未包含在上下文的模型中

    以下解决方案在 net core 1 1中有效 但从1 1升级到2 0后 我收到以下错误 InvalidOperationException 无法为 Role 创建 DbSet 因为该类型未包含在上下文的模型中 当用户尝试登录时 执行以下语
  • 捕获谷歌应用程序引擎日志输出

    如何在管理控制台之外查看 Google App Engine 日志 我正在开发 所以使用dev appserver py 管理控制台并希望在发出记录时查看日志 我想使用标准 Unix 工具 例如 在控制台中监控日志输出 less grep
  • 查找文件中最后一次出现的字符串

    我需要从 C 中的特定字符串中获取最后一次出现的日志跟踪 例如 lines File ReadLines logPath SkipWhile line gt line Contains param Take 20 该代码可以工作 但它从日志
  • Coffeescript 中的臃肿 JS 想要返回所有内容

    我这里有这个 Coffeescript brew args gt for e in args alert e null brew fo re eo 我希望我不需要在那里放置 null 来让它工作 但可惜的是 它编译成这样 brew func
  • 比较 Pyspark 中的列

    我正在开发一个包含 n 列的 PySpark DataFrame 我有一组 m 列 m 例如 输入 PySpark DataFrame 包含 col 1 1 2 3 col 2 2 1 4 col 3 3 2 5 Ouput col 4 m