apache-spark - 将 pyspark 列转换为列表
问题描述
我认为这很容易,但找不到答案:-)
如何将名称列转换为列表。我希望我可以让 isin 工作,而不是加入另一个 datframe 列。但是 isin 似乎需要一个列表(如果我理解正确的话)。
创建数据框:
from pyspark import SparkContext, SparkConf, SQLContext
from datetime import datetime
sc = SparkContext().getOrCreate()
sqlContext = SQLContext(sc)
data2 = [
('George', datetime(2010, 3, 24, 3, 19, 58), 3),
('Sally', datetime(2009, 12, 12, 17, 21, 30), 5),
('Frank', datetime(2010, 11, 22, 13, 29, 40), 2),
('Paul', datetime(2010, 2, 8, 3, 31, 23), 8),
('Jesus', datetime(2009, 1, 1, 4, 19, 47), 2),
('Lou', datetime(2010, 3, 2, 4, 33, 51), 3),
]
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
函数然后收集来获取列表变量。
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']
推荐阅读
- msbuild - 可以覆盖默认的 Wix 定义常量吗?CNDL0288
- docker - Mockoon Dockerize 命令给出的错误文件太旧?
- python - psycopg2 - datetime SyntaxError:x 处或附近的语法错误
- android - android中这种类型的选项菜单是什么?
- spring - 使用 webflux 在另一个中设置一个单声道
- python - 交换由分隔符分隔的最后 2 个列字符串
- r - 无法加载共享对象 xgboost.so 和 libstdc++.so.6:安装 Xgboost 时未找到版本“GLIBCXX_3.4.23”
- javascript - 如何使用带有 HTML 变量的 JavaScript 发送 API 获取请求
- javascript - 如何验证具有重复 ID 的对象数组中的值?
- javascript - JavaScript画布图像生成在字母之间添加间距