使用scala从数据帧中删除重复列

使用scala从数据帧中删除重复列,scala,apache-spark,dataframe,Scala,Apache Spark,Dataframe,我需要从数据帧中删除一个列,该数据帧具有另一个同名列。我只需要删除一列,并需要进一步使用另一列 例如,给定此输入DF: sno | age | psk | psk --------------------- 1 | 12 | a4 | a4 我希望获得以下输出DF: sno | age | psk ---------------- 1 | 12 | a4 RDD是一种方法,但您需要知道重复列的列索引,以便将重复列删除回dataframe 如果您的dataframe中有重复的

我需要从数据帧中删除一个列,该数据帧具有另一个同名列。我只需要删除一列,并需要进一步使用另一列

例如,给定此输入DF:

sno | age | psk | psk
---------------------
 1  |  12 |  a4 | a4
我希望获得以下输出DF:

sno | age | psk
----------------
 1  |  12 |  a4 
RDD是一种方法,但您需要知道重复列的列索引,以便将重复列删除回dataframe

如果您的dataframe中有重复的列

+---+---+---+---+
|sno|age|psk|psk|
+---+---+---+---+
|1  |12 |a4 |a4 |
+---+---+---+---+
您知道最后两列索引是重复的

下一步是删除重复的列名并形成模式

重要的部分是将数据帧转换为rdd,并删除所需的列索引。这里是第四个

val rdd = df.rdd.map(row=> Row.fromSeq(Seq(row(0).toString, row(1).toString, row(2))))
最后一步是使用模式将rdd转换为数据帧

应该给你什么

+---+---+---+
|sno|age|psk|
+---+---+---+
|1  |12 |a4 |
+---+---+---+
我希望答案是有帮助的

sqlContext.createDataFrame(rdd, schema).show(false)
+---+---+---+
|sno|age|psk|
+---+---+---+
|1  |12 |a4 |
+---+---+---+