python – PySpark:添加一个新列,其中包含从列创建的元组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – PySpark:添加一个新列,其中包含从列创建的元组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1208字,纯文字阅读大概需要2分钟。
内容图文
这里我创建了一个dateframe,如下所示,
df = spark.createDataFrame([('a',5,'R','X'),('b',7,'G','S'),('c',8,'G','S')],
["Id","V1","V2","V3"])
看起来像
+---+---+---+---+
| Id| V1| V2| V3|
+---+---+---+---+
| a| 5| R| X|
| b| 7| G| S|
| c| 8| G| S|
+---+---+---+---+
我想添加一个由V1,V2,V3组成的元组列.
结果应该是这样的
+---+---+---+---+-------+
| Id| V1| V2| V3|V_tuple|
+---+---+---+---+-------+
| a| 5| R| X|(5,R,X)|
| b| 7| G| S|(7,G,S)|
| c| 8| G| S|(8,G,S)|
+---+---+---+---+-------+
我曾尝试使用与Python类似的syntex,但它不起作用:
df.withColumn("V_tuple",list(zip(df.V1,df.V2,df.V3)))
TypeError:zip参数#1必须支持迭代.
任何帮助,将不胜感激!
解决方法:
我是来自scala,但我相信在python中有类似的方式:
使用sql.functions包mehtod:
如果要使用这三列获取StructType,请使用struct(cols:Column *):Column方法,如下所示:
from pyspark.sql.functions import struct
df.withColumn("V_tuple",struct(df.V1,df.V2,df.V3))
但如果你想把它作为一个String,你可以使用concat(exprs:Column *):Column方法,如下所示:
from pyspark.sql.functions import concat
df.withColumn("V_tuple",concat(df.V1,df.V2,df.V3))
使用第二种方法,您可能必须将列转换为字符串
我不确定python语法,如果有语法错误,只需编辑答案.
希望这对你有所帮助.最好的祝福
内容总结
以上是互联网集市为您收集整理的python – PySpark:添加一个新列,其中包含从列创建的元组全部内容,希望文章能够帮你解决python – PySpark:添加一个新列,其中包含从列创建的元组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。