如何解决将pyspark列转换为列表
我认为这很容易,但是找不到答案:-)
如何将名称列转换为列表。我希望我可以让isin正常工作,而不是针对另一个datframe列进行联接。但是isin似乎需要一个列表(如果我理解正确的话)。
创建datframe:
from pyspark import SparkContext,SparkConf,SQLContext
from datetime import datetime
sc = SparkContext().getOrCreate()
sqlContext = SQLContext(sc)
data2 = [
('George',datetime(2010,3,24,19,58),3),('Sally',datetime(2009,12,17,21,30),5),('Frank',11,22,13,29,40),2),('Paul',2,8,31,23),8),('Jesus',1,4,47),('Lou',33,51),]
df2 = sqlContext.createDataFrame(data2,['name','trial_start_time','purchase_time'])
df2.show(truncate=False)
应该像这样:
+------+-------------------+-------------+
|name |trial_start_time |purchase_time|
+------+-------------------+-------------+
|George|2010-03-24 07:19:58|3 |
|Sally |2009-12-12 22:21:30|5 |
|Frank |2010-11-22 18:29:40|2 |
|Paul |2010-02-08 08:31:23|8 |
|Jesus |2009-01-01 09:19:47|2 |
|Lou |2010-03-02 09:33:51|3 |
+------+-------------------+-------------+
我不确定收集是否是我能接近的。
df2.select(“ name”)。collect()
[Row(name='George'),Row(name='Sally'),Row(name='Frank'),Row(name='Paul'),Row(name='Jesus'),Row(name='Lou')]
关于如何将名称列输出到列表的任何建议?
它可能需要看起来像这样:
[乔治,莎莉,弗兰克,保罗,耶稣,娄]
解决方法
使用 collect_list
函数,然后收集以获取 list 变量。
Example:
from pyspark.sql.functions import *
df2.agg(collect_list(col("name")).alias("name")).show(10,False)
#+----------------------------------------+
#|name |
#+----------------------------------------+
#|[George,Sally,Frank,Paul,Jesus,Lou]|
#+----------------------------------------+
lst=df2.agg(collect_list(col("name"))).collect()[0][0]
lst
#['George','Sally','Frank','Paul','Jesus','Lou']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。