如何从 pyspark 中的列创建列表列
How to create a column of lists from a column in 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|
+---+----+---+
我希望每个 id
有 1 行,而一列将包含 list
以及来自 col
列的值。输出将如下所示:
+---+------------------+
| id| col|
+---+------------------+
| a| ['1','2','1','2']|
| b| ['3','2','3','2']|
+---+------------------+
您可以在 id
列上使用 goupBy
,然后在 col
列上使用 collect_list
:
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]|
+---+------------+
我有以下 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|
+---+----+---+
我希望每个 id
有 1 行,而一列将包含 list
以及来自 col
列的值。输出将如下所示:
+---+------------------+
| id| col|
+---+------------------+
| a| ['1','2','1','2']|
| b| ['3','2','3','2']|
+---+------------------+
您可以在 id
列上使用 goupBy
,然后在 col
列上使用 collect_list
:
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]|
+---+------------+