Dataframe 如何使用逗号分隔的值拆分列,并将其存储在PySpark数据帧的数组中?如下所示

Dataframe 如何使用逗号分隔的值拆分列,并将其存储在PySpark数据帧的数组中?如下所示,dataframe,pyspark,apache-spark-sql,pyspark-dataframes,Dataframe,Pyspark,Apache Spark Sql,Pyspark Dataframes,我有一个PySpark数据框架,其中的列包含逗号分隔的值。值的数目 列包含的值是固定的,例如4。例如: +------------------------+ |col1 | +------------------------+ |1,val1, val4 | |2,val1 | |3,val1, val2, val3 | |4,val1, val2, val3, val4| +--------

我有一个PySpark数据框架,其中的列包含逗号分隔的值。值的数目 列包含的值是固定的,例如4。例如:

+------------------------+
|col1                    |
+------------------------+
|1,val1, val4            |
|2,val1                  |
|3,val1, val2, val3      |
|4,val1, val2, val3, val4|
+------------------------+
现在我想把它分成两列,如下所示

+----+------------------------+
|col1|col2                    |
+----+------------------------+
|   1|[val1, val4]            |
|   2|[val1]                  |
|   3|[val1, val2, val3]      |
|   4|[val1, val2, val3, val4]|
+----+------------------------+

如何做到这一点?

您可以使用和:

从pyspark.sql.functions导入col、split、slice 数组长度=4 df.withColumnar,splitcol1\ 选择 colar[0]。别名为Col1, slicecolar,2,数组_len.aliascol2 +--+--------------+ |col1 | col2| +--+--------------+ |1 |[val1,val4]| |2 |[val1]| |3 |[val1,val2,val3]| |4 |[val1,val2,val3,val4]| +--+--------------+
首先,我们将数组拆分并存储到ar中,然后使用select以colar[0]检索数组的第一项,并使用slicecolar,2,array_len检索数组的其余部分,该数组将返回除第一项以外的所有项。

slice中的2表示什么?我们保留项目2-4,slice函数从1Okay开始计数,但您为什么要手动定义array\u len?有没有办法像我们在pandas iloc[10:]中那样指定范围,这意味着第十行及以后的行。没有,slice只接受整数@Sid_K,甚至不接受列,即SizeColol。谢谢亚历克斯!