如何从不同列条件下的 PySpark 数据帧中提取数组元素?

2024-04-19

我有以下内容PySpark 输入数据框:

+-------+------------+
| index | valuelist  |
+-------+------------+
| 1.0   | [10,20,30] |
| 2.0   | [11,21,31] |
| 0.0   | [14,12,15] |
+-------+------------+

Where:

  • 索引:双精度型
  • 值列表:类型Vector. (it's 非数组)

从上面的输入数据框中,我想得到以下内容输出数据帧 in PySpark

+-------+-------+
| index | value |
+-------+-------+
| 1.0   | 20    |
| 2.0   | 31    |
| 0.0   | 14    |
+-------+-------+

Logic:

for each row:
  value = valuelist[index] 

Spark 1.5 及更高版本

您可以使用pyspark.sql.functions.expr to 将列值作为输入传递给函数 https://stackoverflow.com/questions/51140470/using-a-column-value-as-a-parameter-to-a-spark-dataframe-function:

df.select("index", f.expr("valuelist[CAST(index AS integer)]").alias("value")).show()
#+-----+-----+
#|index|value|
#+-----+-----+
#|  1.0|   20|
#|  2.0|   31|
#|  0.0|   14|
#+-----+-----+

Spark 2.1 及更高版本

如果你有spark版本 2.1 或更高版本,这里有一个替代方法pyspark.sql.functions.posexplode:

import pyspark.sql.functions as f

df.select("index", f.posexplode("valuelist").alias("pos", "value"))\
    .where(f.col("index").cast("int") == f.col("pos"))\
    .select("index", "value")\
    .show()
#+-----+-----+
#|index|value|
#+-----+-----+
#|  1.0|   20|
#|  2.0|   31|
#|  0.0|   14|
#+-----+-----+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从不同列条件下的 PySpark 数据帧中提取数组元素? 的相关文章

  • 如果包含字符串列表,则过滤 pyspark 数据帧

    假设我们有一个 pyspark 数据框 其列之一 column a 包含一些字符串值 并且还有一个字符串列表 list a 数据框 column a count some string 10 another one 20 third str
  • Spark 使用自定义架构读取镶木地板

    我正在尝试使用自定义架构导入镶木地板格式的数据 但它返回 类型错误 option 缺少 1 个必需的位置参数 值 ProductCustomSchema StructType StructField id sku IntegerType T
  • 优化spark sql中分区数据写入S3

    我在每个 Spark 作业运行中从 HDFS 读取大约 700 GB 的数据 我的工作读取这些数据 过滤大约 60 的数据 将其分区如下 val toBePublishedSignals hiveCtx sql some query toB
  • 如何加入数据框(来自数据集的集合)?

    我正在寻找并找出最好的加入方式nSpark 数据帧 Example List df1 df2 df3 dfN 哪里都df有一个我可以参加的约会 递归 像这样 List df1 df2 df3 dfN reduce a b gt a join
  • Spark DataFrame 删除重复项并保留第一个

    问题 在 pandas 中 当删除重复项时 您可以指定要保留哪些列 Spark Dataframes 中有等效的吗 Pandas df sort values actual datetime ascending False drop dup
  • Spark Mongo 连接器,MongoShardedPartitioner 不起作用

    出于测试目的 我配置了一个 4 节点集群 每个节点都有一个 Spark Worker 和一个 MongoDB Shard 这些是详细信息 四台 Debian 9 服务器 名为 Visa0 Visa 1 Visa 2 Visa 4 个节点上的
  • 如何将我自己的函数添加为 ML pyspark Pipeline 中的自定义阶段? [复制]

    这个问题在这里已经有答案了 Florian 的示例代码 ball column keep the hall column 0 7 14 1 8 15 2 9 16 3 10 17 4 11 18
  • 参数为动态的 Spark 滞后函数

    我需要在spark中实现lag函数 我可以像下面这样做 使用 hive temp Spark 表中的一些数据 假设 DF 有这些行 lagno value 0 100 0 200 2 null 3 null 其中第一列是您要使用的实际滞后数
  • AWS EMR PySpark 连接到 mysql

    我正在尝试使用 jdbc 通过 pyspark 连接到 mysql 我可以在 EMR 之外完成此操作 但是当我尝试使用 EMR 时 pyspark 无法正确启动 我在我的机器上使用的命令 pyspark conf spark executo
  • Spark:shuffle操作导致GC长时间暂停

    我在跑Spark 2我正在尝试洗牌大约 5 TB 的 json 我在洗牌期间遇到了很长的垃圾收集暂停Dataset val operations spark read json inPath as MyClass operations re
  • pyspark.pandas 与 pandas 有什么区别?

    开始在 Databricks 上使用 PySpark 我发现我可以导入pyspark pandas旁边pandas 有什么不同 我认为这不像koalas right PySpark 是 Python 中 Apache Spark 的接口 它
  • 使用列值作为 Spark DataFrame 函数的参数

    考虑以下数据框 letter rpt X 3 Y 1 Z 2 可以使用以下代码创建 df spark createDataFrame X 3 Y 1 Z 2 letter rpt 假设我想重复每行列中指定的次数rpt 就像这样questio
  • 计算行的排名

    我想根据一个字段对用户 ID 进行排名 对于相同的字段值 排名应该相同 该数据位于 Hive 表中 e g user value a 5 b 10 c 5 d 6 Rank a 1 c 1 d 3 b 4 我怎样才能做到这一点 可以使用ra
  • 消息:Hive 架构版本 1.2.0 与 Metastore 的架构版本 2.1.0 不匹配 Metastore 未升级或损坏

    环境 spark2 11 hive2 2 hadoop2 8 2 hive shell 运行成功 并且没有错误或警告 但是当运行application sh时 启动失败 usr local spark bin spark submit cl
  • 如何过滤 pyspark 列表中值的列?

    我有一个数据框原始数据 我必须在 X 列上应用值 CB CI 和 CR 的过滤条件 所以我使用了下面的代码 df dfRawData filter col X between CB CI CR 但我收到以下错误 Between 恰好需要 3
  • 如何从 Databricks Delta 表中删除列?

    我最近开始发现 Databricks 并遇到了需要删除增量表的特定列的情况 当我使用 PostgreSQL 时 它就像 ALTER TABLE main metrics table DROP COLUMN metric 1 我正在浏览 Da
  • 通过过滤对 Pyspark Dataframe 进行分组

    我有一个数据框如下 cust id req req met 1 r1 1 1 r2 0 1 r2 1 2 r1 1 3 r1 1 3 r2 1 4 r1 0 5 r1 1 5 r2 0 5 r1 1 我必须观察客户 看看他们有多少要求 看看
  • 以编程方式结束/退出粘合作业

    我正在使用 Glue 书签来处理数据 我的工作是每天安排的 但也可以 手动 启动 由于我使用书签 有时胶水作业可以在没有新数据要处理的情况下启动 然后读取的数据帧为空 在这种情况下 我想好好地结束我的工作 因为它没有什么关系 我试过 if
  • 更改 Spark SQL 中的 Null 顺序

    我需要能够按升序和降序对列进行排序 并且还允许空值位于第一个或空值位于最后一个 使用 RDD 我可以将 sortByKey 方法与自定义比较器结合使用 我想知道是否有使用 Dataset API 的相应方法 我了解如何将 desc asc
  • 如何使用 Spark 2 屏蔽列?

    我有一些表 我需要屏蔽其中的一些列 要屏蔽的列因表而异 我正在读取这些列application conf file 例如 对于员工表如下所示 id name age address 1 abcd 21 India 2 qazx 42 Ger

随机推荐

  • 需要正则表达式来匹配特殊情况

    我正在拼命寻找与这些场景匹配的正则表达式 1 匹配交替字符 我有一个像 这是我的 foobababababaf 字符串 这样的字符串 我想匹配 babababa 我唯一知道的是要搜索的片段的长度 我不知道可能是什么字符 数字 但它们是交替的
  • 间歇性 MongoDB 连接问题:尝试以访问权限禁止的方式访问套接字

    当尝试将文档写入我的集合时 我偶尔会抛出以下异常 我正在使用 mLabs 托管的 MongoDB 3 0 7 我们的应用程序托管在 Azure 中 作为 Web 应用程序 我使用的是 C 2 2 3 SDK MongoDB Driver M
  • C++:“我的文本”是 std::string、*char 还是 c 字符串?

    我刚刚做了看似的事情新手常见的错误 https stackoverflow com questions 721129 spot the error in this file reading code c 首先我们读到许多教程之一 http
  • Heroku CLI 突然损坏

    突然 从一个命令到下一个命令 Heroic CLI 停止工作 无论我在命令行中输入什么内容 我都会收到相同的错误 见下文 heroku help commands is not a heroku command Perhaps you me
  • boto3 S3 对象解析

    我正在尝试编写一个 Python 脚本来处理存储在 S3 上的音频数据 我有一个 S3 对象 我正在使用它调用 def grabAudio filename directory obj s3client get object Bucket
  • 什么是 java.lang.Class[]

    What is java lang Class Thanks Puneet 参数化类型的类型参数不限于具体的 类或接口 Java 允许使用类型通配符作为 参数化类型的类型参数 通配符是类型参数 以 的形式 可能有上限或下限 鉴于 通配符表示
  • Rscript执行错误:没有那个文件或目录

    Rscript 的二进制文件可用 但当我尝试使用它时 我得到 Rscript helloworld r Rscript execution error No such file or directory 如果我只做 Rscript 它会带来
  • 使用 openCV 查找图像轮廓

    因为我想跟踪物体的运动 所以我需要图像序列的轮廓 有人知道怎么做这个吗 轮廓蒙版是一个二值图像 在运动发生处具有非零像素 您可以使用以下技术背景扣除 这里有两种方法 从当前帧中减去前一帧 只有两个帧中未发生变化的像素才会导致零 看cvSub
  • 使用 Gmail 的 PHP 邮件

    在我的 PHP Web 应用程序中 我希望在发生某些错误时通过电子邮件收到通知 我想使用我的 Gmail 帐户发送这些内容 这怎么可能做到呢 Gmail 的 SMTP 服务器需要非常具体的配置 From Gmail 帮助 http mail
  • 如何将文件从 Ansible Tower 上传到 Artifactory?

    我每次都会收到此错误 但仅在尝试从 Ansible Tower 上传到 Artifactory 时出现在特定文件上 这些文件都是在清单主机上创建的Oracle Collection Tool 然后在上传到 Artifactory 之前获取到
  • 在 Typescript 中声明并初始化字典

    给出以下代码 interface IPerson firstName string lastName string var persons id string IPerson p1 firstName F1 lastName L1 p2 f
  • Bootstrap 容器流体填充

    以下 HTML 生成不需要的填充 div class container fluid div class row div class col xs 12 test div div div 显示问题的屏幕截图 这里的答案都没有帮助我使用 Bo
  • Jenkins 服务始终在 minikube 上挂起

    我安装了minikube在本地 仪表板是 192 168 99 100 30000 我通过 helm 安装了 Jenkins helm install stable jenkins 然后服务始终挂起 kubectl get services
  • 我怎样才能得到dag中的execution_date?运算符的外部?

    我怎样才能获得execution date参数在 dag 之外 execution min execution date strftime M if execution min 00 logging info YES It s 00 fin
  • 如何获取文件相对于 Git 存储库根的路径?

    Example cd lib git absolute path test c how to do this lib test c Use git ls files https www git scm com docs git ls fil
  • 为什么需要锁来实现 readonly int 属性?

    我是线程新手 我遇到了一个自定义线程池实现示例blog http ferruh mavituna com net multithreading ve basit bir threadpool implementasyonu oku 我只粘贴
  • iPad 状态栏有时会消失,留下空白 - 但我从不隐藏它!

    我从不隐藏状态栏 但有时它会消失 这种模式似乎是在一些全屏转换之后发生的 从一个视图水平翻转到另一个视图 使用 QLPreviewController 当它被关闭时 状态栏就会消失 但是 我无法重现它 它只是有时会发生 永远不会在模拟器上
  • 强制 iOS 将 Unicode 符号渲染为平面/文本

    iPhone 现在可以自动将 2D unicode 符号转换为 3D 表情符号 例如 我需要 unicode 以传统的黑白字形格式呈现 而且 我无法轻松地将 Unicode 符号替换为图像 因为这是在 UITableView 行的 edit
  • @Request Mapping 中的生产和消费是什么

    我的项目中有以下代码行 RequestMapping value UrlHandler GET AUTHENTICATION produces application json consumes application json metho
  • 如何从不同列条件下的 PySpark 数据帧中提取数组元素?

    我有以下内容PySpark 输入数据框 index valuelist 1 0 10 20 30 2 0 11 21 31 0 0 14 12 15 Where 索引 双精度型 值列表 类型Vector it s 非数组 从上面的输入数据框