python – 根据列值是否在另一列中,向PySpark DataFrame添加列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 根据列值是否在另一列中,向PySpark DataFrame添加列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1302字,纯文字阅读大概需要2分钟。
内容图文
我有一个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)]
我如何查找第二列到第三列来决定值以及如何添加它?
解决方法:
以下代码执行所请求的任务.定义了一个用户定义的函数,它接收两列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|
+----+----+---------+------+
内容总结
以上是互联网集市为您收集整理的python – 根据列值是否在另一列中,向PySpark DataFrame添加列全部内容,希望文章能够帮你解决python – 根据列值是否在另一列中,向PySpark DataFrame添加列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。