问题描述
我的数据框看起来像下面的.dat格式
_c0
This*is*header
siva*2121*123821*3123
sankar*2121*123821*3123
hraju*2121*123821*3123
santhi*2121*123821*3123
This*is*trailer
我要删除第一行This 是标题,最后一行This 是尾部,这里的'*'是定界符。我想创建如下具有4列的数据框。请在python pyspark lbrary中提供解决方案
以表格格式的预期输出:
C1 C2 C3 C4
siva 2121 123821 3123
sankar 2121 123821 3123
hraju 2121 123821 3123
santhi 2121 123821 3123
解决方法
如果标题和尾部的拆分计数不同,则可以按计数进行过滤。
df.withColumn('array',split('_c0','\*')) \
.withColumn("count",size('array')) \
.filter('count > 3') \
.select(*[col('array')[i].alias('col' + str(i)) for i in range(0,4)]) \
.show()
+------+----+------+----+
| col0|col1| col2|col3|
+------+----+------+----+
| siva|2121|123821|3123|
|sankar|2121|123821|3123|
| hraju|2121|123821|3123|
|santhi|2121|123821|3123|
+------+----+------+----+