根据列值是否在另一列中将列添加到 PySpark DataFrame

2024-01-05

我有一个 PySpark DataFrame,其结构为

[('u1', 1, [1 ,2, 3]), ('u1', 4, [1, 2, 3])].toDF('user', 'item', 'fav_items')

我需要添加另一列 1 或 0,具体取决于“item”是否在“fav_items”中。

所以我想要

[('u1', 1, [1 ,2, 3], 1), ('u1', 4, [1, 2, 3], 0)]

我如何在第三列中查找第二列来决定值,然后如何添加它?


以下代码执行请求的任务。定义了一个用户定义的函数,该函数接收 a 的两列DataFrame作为参数。因此,对于每一行,搜索项目是否在项目列表中。如果找到该项目,则返回 1,否则返回 0。

# Imports
from pyspark.sql.types import IntegerType
from pyspark.sql.functions import udf
# First we create a RDD in order to create a dataFrame:
rdd = sc.parallelize([('u1', 1, [1 ,2, 3]), ('u1', 4, [1, 2, 3])])
df = rdd.toDF(['user', 'item', 'fav_items'])
# Print dataFrame
df.show()

# We make an user define function that receives two columns and do operation
function = udf(lambda item, items: 1 if item in items else 0, IntegerType())

df.select('user', 'item', 'fav_items', function(col('item'), col('fav_items')).alias('result')).show()

结果如下:

+----+----+---------+
|user|item|fav_items|
+----+----+---------+
|  u1|   1|[1, 2, 3]|
|  u1|   4|[1, 2, 3]|
+----+----+---------+

+----+----+---------+------+
|user|item|fav_items|result|
+----+----+---------+------+
|  u1|   1|[1, 2, 3]|     1|
|  u1|   4|[1, 2, 3]|     0|
+----+----+---------+------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据列值是否在另一列中将列添加到 PySpark DataFrame 的相关文章

随机推荐

  • 如何使用 API 在 YouTube 社区选项卡上上传帖子?

    我搜索了一些相关内容 但找不到 如何使用 YouTube API 在 YouTube 社区选项卡上上传帖子 v3 不可以吗 遗憾的是 我在 Google 论坛中找到了更多有关此问题的信息 他们说不要发布开发人员类型的问题 我也在这里寻找有关
  • 覆盖 React Framer Motion 中的转换延迟

    我创建motion div组件 其中包含initial animate and whileTap特性
  • map.setMyLocationEnabled(true);不管用

    我刚刚开始开发一个 android 项目并正在使用 Google Map API 我可以在我的应用程序上获取地图 但是当我尝试使用以下命令启用当前位置时map setMyLocationEnabled true 应用程序说不幸的是应用程序已
  • DELETE FROM ... 报告“.”处或附近的语法错误

    我试图从数据库中仅删除一项数据 但是 当我编写命令时 我不断收到一些语法错误 您能告诉我错误在哪里吗 这是我尝试过的命令 DELETE FROM database userprofile WHERE user username some E
  • 我正在尝试编写一个返回多个值的宏

    这条线上出现错误 Finalrow Cells Row Count 1 End X1UP Row Error is 对象所需的运行时错误 424 下面是代码 Sub MyVlookup Dim r As Long C As Long Col
  • 在MATLAB MEX库中使用boost,与MATLAB的版本不同

    我们正在创建许多使用我们的通信库的 MATLAB MEX 文件 这个通信库大量使用了Boost 现在 MATLAB 也在内部使用 boost 这意味着在标准设置中 我们不能使用与 MATLAB 附带的版本不同的 boost 版本 否则就会发
  • Excel中如何将长表格转换为宽表格?

    一张图片胜过千言万语 假设在一张纸中我有下表 使用这些信息 我想以编程方式在另一张纸中生成这样的表格 有点将长表格分解为宽表格 你怎样才能做到这一点 使用VBA Range G1 K99 Clear For Each xx In Range
  • MapActivity 中的 SherlockActionBar

    我在整个应用程序中广泛使用 Sherlock Action Bar 但我有一个继承自 MapActivity 的活动 因此我无法使其继承自 SherlockActivity 有什么方法可以利用地图中的 Sherlock 操作栏来自定义它吗
  • 在 SQL Server 中将标识列重置为零?

    如何在 SQL Server 中将表的 Identity 列重置为零 Edit 我们如何使用 LINQ to SQL 来做到这一点 DBCC CHECKIDENT MyTable RESEED NewValue 您还可以执行截断表 但是 当
  • += 事件运算符

    public void Bar Foo foo new Foo foo MyEvent foo MyEvent foo FireEvent void foo MyEvent object sender EventArgs e Foo sen
  • Spring Security 5 OAuth2客户端密码授予类型

    我有2个应用程序 Spring应用程序1是客户端和资源服务器 Spring应用程序2是授权服务器 用户将能够登录应用程序 1 并访问其资源 我想实现以下流程 用户在登录表单中输入他的凭据 gt 应用程序 1 将使用用户凭据及其密码从应用程序
  • MFC 中的国际化

    终于 经过多年的推迟 将我的应用程序本地化为英语以外的其他几种语言 第一个挑战是设计与我的 C MFC 应用程序的集成 该应用程序具有数十个对话框和无数字符串 我遇到了两种可能的替代实现 将本地化资源文件编译并部署为 DLL 提取所有字符串
  • PHPCS 未在命令行上运行?

    当我输入 phpcs version 时 我没有得到版本号 而是得到如下内容 Applications drupal php bin phpcs line 2 php No such file or directory Applicatio
  • 使用 PHP 解析 xml 文件的 simpleXML 替代方案

    我只是想知道是否有 simpleXML 的替代方案来使用 PHP 解析 XML 数据 例如 如果 simpleXML 模块未加载 或者即使存在比 SimpleXML 性能更好的库 类 显然有处理 XML 的多种不同方式 http docs
  • 10.3 中包含 javax.servlet 的 WebLogic Jar 在哪里?

    我正在尝试配置我的路径以将 javax servlet 包含在 WebLogic 中 WebLogic 已拆分出 Jar 文件 那么哪一个包含 javax servlet 从 WebLogic 10 开始 BEA 外部化了 API 规范的实
  • 查找 GZIP 文件内的文件大小

    有没有办法找出java中GZIP文件内原始文件的大小 例如 我有一个 15 MB 的文件 a txt 它已被 GZipped 为 3MB 大小的 a gz 我想知道 a gz 中存在的 a txt 的大小 而不需要解压缩 a gz 除了压缩
  • 如何为 Django 设置 Jupyter/IPython Notebook?

    我一直在使用中描述的方法这个帖子 https andrewbrookins com python using ipython notebook with django 用于设置 IPython Notebook 以与 Django 很好地配
  • websocket 是否仅适用于浏览器

    我正在尝试使用第 3 方库编写本机 Objective C 和本机 Android 应用程序 我已经选择了图书馆并且我已经在这方面取得了进展 我团队中的一个人认为 目前 websocket 的实现主要集中在 Web 浏览器上 如果我们使用这
  • Java 中的格式化打印

    我有这个代码 public String toString Day day String s day getDayName day toString return s 这是 Day 类的 toString 方法 public String
  • 根据列值是否在另一列中将列添加到 PySpark DataFrame

    我有一个 PySpark DataFrame 其结构为 u1 1 1 2 3 u1 4 1 2 3 toDF user item fav items 我需要添加另一列 1 或 0 具体取决于 item 是否在 fav items 中 所以我