我有一个数据框,它包含类似于下面的列中的列表。所有列中的列表的长度是不同的。
Name Age Subjects Grades
[Bob] [16] [Maths,Physics,Chemistry] [A,B,C]
我想以这样一种方式分解 Dataframe ,以获得以下输出-
Name Age Subjects Grades
Bob 16 Maths A
Bob 16 Physics B
Bob 16 Chemistry C
我如何才能做到这一点?
6条答案
按热度按时间xnifntxz1#
PySpark在Python 2.4中添加了一个
arrays_zip
函数,它消除了使用Python UDF压缩数组的需要。watbbzwu2#
这是可行的,
将
udf
与zip
一起使用。explode
所需的列必须在分解之前合并。bxfogqkk3#
派对迟到:-)
最简单的方法是使用
inline
,它没有python API,但受selectExpr
支持。第一个
n3schb8v4#
你试过这个吗
您可以将 Dataframe 转换为RDD。
对于RDD,您可以使用
flatMap
函数来分隔主题。q1qsirdb5#
复制/粘贴功能,如果您需要在数据集中的大量列之间快速轻松地重复此操作
欢迎光临:)
w7t8yxp56#
当分解多列时,只有当数组长度相同时,上述解决方案才能派上用场,但如果数组长度不同,最好将它们分别分解,每次取不同的值。