Dataframe 如何使用逗号分隔的值拆分列,并将其存储在PySpark数据帧的数组中?如下所示
我有一个PySpark数据框架,其中的列包含逗号分隔的值。值的数目 列包含的值是固定的,例如4。例如: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| +--------
+------------------------+
|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。谢谢亚历克斯!