如何将数组拆分为单独的列并在pyspark中转置?

时间:2019-06-01 17:42:59

标签: arrays apache-spark dataframe pyspark transpose

我有以下数据框。

rdd=sc.parallelize([(1,'001'),(2,'001'),(3,'010')])
df=rdd.toDF(['Rec_Num','Val'])
df.show()
Rec_Num|Val
1|001
2|001
3|010

我还有一个列名列表。

l=['Name','Age','Joining_date']

我想要的输出是如下数据帧:

Name|0
Age|1
Joining_date|2
Total|3

第一列是列表l的元素。第二列是df中Val列的每个索引中的1。即Val的第一个索引的值为0 0 0;因此输出为0,第二个索引的值为0 0和1,因此年龄为1,加入日期为2。 此外,最后一行是df中的行数。

这是我尝试过的。

df1=df.select(split(df['Val'],''))

这给了我一个数组列,我想到将其拆分为不同的列,并转置并找到1的总和或计数,然后创建另一个数据帧。但是我被困在这里。 df中的行数可以变化,列表l中的元素数也可以变化。我想写一个通用的解决方案,以便它可以合并任意数量的列。

0 个答案:

没有答案