Pyspark 合并数据框中的 WrappedArrays

2023-12-14

当前的 Pyspark 数据帧具有以下结构(col2 的 WrappedArrays 列表):

+---+---------------------------------------------------------------------+  
|id |col2                                                                 |   
+---+---------------------------------------------------------------------+  
|a  |[WrappedArray(code2), WrappedArray(code1, code3)]                    |  
+---+---------------------------------------------------------------------+  
|b  |[WrappedArray(code5), WrappedArray(code6, code8)]                    |  
+---+---------------------------------------------------------------------+  

这是我想要的结构(col2 的扁平列表):

+---+---------------------------------------------------------------------+  
|id |col2                                                                 |   
+---+---------------------------------------------------------------------+  
|a  |[code2,code1, code3)]                                                |  
+---+---------------------------------------------------------------------+  
|b  |[code5,code6, code8]                                                 |  
+---+---------------------------------------------------------------------+  

但我不确定如何进行这种转变。我曾尝试制作平面图,但似乎不起作用。有什么建议么?


您可以使用 udf 和 rdd 两种方式来完成此操作。这是示例:-

df = sqlContext.createDataFrame([
    ['a',  [['code2'],['code1', 'code3']]],  
    ['b',  [['code5','code6'], ['code8']]]
], ["id", "col2"])  
df.show(truncate = False)
+---+-------------------------------------------------+
|id |col2                                             |
+---+-------------------------------------------------+
|a  |[WrappedArray(code2), WrappedArray(code1, code3)]|
|b  |[WrappedArray(code5, code6), WrappedArray(code8)]|
+---+-------------------------------------------------+

RDD:-

df.map(lambda row:(row[0], reduce(lambda x,y:x+y, row[1]))).toDF().show(truncate=False)
+---+---------------------+
|_1 |_2                   |
+---+---------------------+
|a  |[code2, code1, code3]|
|b  |[code5, code6, code8]|
+---+---------------------+

UDF:-

from pyspark.sql import functions as F
import pyspark.sql.types as T
def fudf(val):
    #emlist = []
    #for item in val:
    #    emlist += item
    #return emlist
    return reduce (lambda x, y:x+y, val)
flattenUdf = F.udf(fudf, T.ArrayType(T.StringType()))
df.select("id", flattenUdf("col2").alias("col2")).show(truncate=False)
+---+---------------------+
|id |col2                 |
+---+---------------------+
|a  |[code2, code1, code3]|
|b  |[code5, code6, code8]|
+---+---------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyspark 合并数据框中的 WrappedArrays 的相关文章

随机推荐

  • Pandas 根据条件组合连续行

    我的问题与此类似 但答案似乎并不完全有效 根据条件合并行 pandas 数据框 给定以下 pandas 数据框 SECTION TEXT NUMBER OF WORDS ONE lots of text 55 ONE word1 1
  • 使用发布库时,OpenCV imread(filename) 在调试模式下失败

    我有一些C 代码并且一切正常OpenCV除了函数imread file 它正确地找到了文件并加载了名称 但没有加载任何数据 Mat pattImage imread fileName 0 经过在网上的一些研究后 我意识到我处于调试模式 但随
  • Java - 跳过for循环中的值

    我正在尝试使用 for 循环跳过值 就像是 for int i 32 i lt 255 but skip 128 to 159 i char ascii char i System out println ascii 有什么建议么 谢谢 在
  • pandas concat('outer') 不做联合?

    它看起来pandas concat正在执行 左外 连接 而不仅仅是联合索引 对我来说似乎是一个错误 但也许我错过了一些明显的东西 import pandas import pandas util testing as put ts1 put
  • PHP 中的多维数组大小限制

    我正在开发一个函数 最终会向数组添加大量维度 我想知道是否有可能达到可以添加的维度的限制 如果是这样 PHP 中的限制是什么 不 我不认为访问深度有限制 除了你有多少内存 不过 每一层都至少添加一个指针间接 因此随着层数的加深 检索元素的速
  • stdClass 类的对象无法转换为字符串

    我不知道为什么 但我收到此错误 可捕获的致命错误 类 stdClass 的对象无法转换为字符串 对于这段代码 sql SELECT FROM player ORDER BY score DESC LIMIT begin arr array
  • InvalidOperationException - 对象当前正在其他地方使用

    我已经经历过这个问题但这没有帮助 这里的情况有所不同 我正在使用后台工作者 第一个后台工作者开始对用户的图像输入进行操作 并在firstbackgroundworker runworkercompleted 内部进行操作 我正在调用另外3个
  • 如何在区域地图上赋予不透明度

    我遇到了 html 不透明度问题 目前我已经使用 css 应用了不透明度 但它不起作用 我的 html 和 css 代码如下 area class transbox href test1 htm target blank area opac
  • Swift 索引 0 超出表视图中空数组的范围

    我正在尝试使用 PFTableViewCell 连接到主电视控制器的 2 个标签进行解析来填充 tableview 当我添加 TableView 的节数 numberOfRowsInSection 时 应用程序崩溃 但是当我删除它时 它可以
  • MVC3中相同类型实体之间的多对多关系

    我有一个 ASP NET MVC3 应用程序 其中使用 Entity Framework 4 3 Code First 和迁移 我一直在尝试在相同类型的实体之间创建多对多关系 但是当我使用迁移搭建迁移支架时 它会生成一对一关系 这个想法是一
  • 为什么 ColumnTransformer 中的 SimpleImputer 创建额外的列?

    我正在关注 Aurelion Geron 的机器学习书籍 我正在尝试ColumnTransformer班级 当我包括SimplerImputer 创建了一个附加列 我明白那个SimplerImputer用于填充列中缺失的值total bed
  • 使用 Ajax 动态显示数据

    在此代码中 单击 like 按钮后 数据已添加到数据库中 我现在想做的是添加数据后 我将查询所选项目的总赞数并在不加载页面的情况下显示它 这是我现在的代码 我的看法 p i class fa fa thumbs up i span span
  • 调用存储过程,当过程名称在mysql的变量中时

    我有 mysql 存储过程 我想在变量中调用它和过程名称 我使用了准备好的语句 但它给了我一个错误 我不是 mysql 专家 这是准备好的声明 gt PREPARE stmt1 FROM CALL SET q sys search SET
  • 如何避免在Windows上使用Git Bash时每次都需要输入解密私钥的密码?

    我有一个自动构建服务 可以从 git 私人存储库下载 问题是 当它尝试克隆存储库时 它需要提供密码 因为它不被记住 因此 由于没有人为交互 它会永远等待密码 我如何强制它记住 id rsa pub 对于 Windows 用户 请注意 这是我
  • 获取当前目录下所有子目录的列表

    有没有办法在Python中返回当前目录中所有子目录的列表 我知道您可以使用文件来执行此操作 但我需要获取目录列表 您的意思是直接子目录 还是树下的每个目录 无论哪种方式 你都可以使用os walk去做这个 os walk directory
  • 强制应用程序在启动时启动

    我正在为我的孩子们创建一个类似信息亭的环境 我的应用程序扫描并杀死了很多游戏进程 因为它们无法玩 M 或以上评级的游戏 因为它们还很年轻 禁用任务管理器 因为它们不需要或不使用它 但我需要一种可以运行该应用程序一次的方法 并且它会复制 添加
  • 绘制到画布 onDraw 有效,绘制 onTouchEvent 无效

    我在 Android SDK 中摆弄 2D 图形 但在一个简单的示例中遇到了麻烦 我假设我只是误解了一些基本的 基本的东西 public class DrawView extends View Paint paint new Paint C
  • iOS 故事板自动布局和添加约束

    我正在更改我的应用程序以支持 3 5 英寸显示屏 目前支持4英寸显示屏 屏幕布局如下所示 如何在故事板中添加以下约束 我在故事板中启用了自动布局选项 如何将button1和button2宽度设置为超级视图宽度的一半 并且两者应该在超级视图宽
  • 为什么在 BinaryReader 上调用 Dispose() 会导致编译错误?

    我有以下类 它在内部使用 BinaryReader 并实现 IDisposable class DisposableClass IDisposable private BinaryReader reader public Disposabl
  • Pyspark 合并数据框中的 WrappedArrays

    当前的 Pyspark 数据帧具有以下结构 col2 的 WrappedArrays 列表 id col2 a WrappedArray code2 WrappedArray code1 code3