如何从pyspark中的列创建列表列

至于

我有以下 pyspark 数据框:

import pandas as pd
foo = pd.DataFrame({'id': ['a','a','a','a', 'b','b','b','b'],
                    'time': [1,2,3,4,1,2,3,5],
                    'col': ['1','2','1','2','3','2','3','2']})

foo_df = spark.createDataFrame(foo)
foo_df.show()

+---+----+---+
| id|time|col|
+---+----+---+
|  a|   1|  1|
|  a|   2|  2|
|  a|   3|  1|
|  a|   4|  2|
|  b|   1|  3|
|  b|   2|  2|
|  b|   3|  3|
|  b|   5|  2|
+---+----+---+

我希望每行有 1 行,id而一列将包含 alist和该列中的值col输出将如下所示:

+---+------------------+
| id|               col|
+---+------------------+
|  a| ['1','2','1','2']|
|  b| ['3','2','3','2']|
+---+------------------+
fskj

您可以在列上使用 a goupByid然后在collect_list列上使用 a col

import pyspark.sql.functions as F
list_df = foo_df.groupBy(F.col("id")).agg(F.collect_list(F.col("col")).alias("col"))
list_df.show()

输出:

+---+------------+
| id|         col|
+---+------------+
|  a|[1, 2, 1, 2]|
|  b|[3, 2, 3, 2]|
+---+------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章