Eu preciso remover uma coluna do dataframe. Tendo @ coluna no mesmo nome. (Precisa remover apenas um e precisa do outro para uso posterior).
input:
sno age psk psk
1 12 a4 a4
output:
sno age psk
1 12 a4
Respostas:
0 para resposta № 1RDD
é o caminho (mas você precisa saber o índice da coluna das colunas duplicadas para remover colunas duplicadas de volta para dataframe
)
Se você tem dataframe
com colunas duplicadas como
+---+---+---+---+
|sno|age|psk|psk|
+---+---+---+---+
|1 |12 |a4 |a4 |
+---+---+---+---+
Você sabe que os dois últimos índices da coluna são duplicados.
O próximo passo é ter nomes de colunas com duplicatas removidas e formar schema
val columns = df.columns.toSet.toArray
val schema = StructType(columns.map(name => StructField(name, StringType, true)))
Parte vital é converter o dataframe
para rdd
e remova o índice de coluna necessário (aqui é o quarto)
val rdd = df.rdd.map(row=> Row.fromSeq(Seq(row(0).toString, row(1).toString, row(2))))
O passo final é converter o rdd
para dataframe
usando schema
sqlContext.createDataFrame(rdd, schema).show(false)
o que deveria lhe dar
+---+---+---+
|sno|age|psk|
+---+---+---+
|1 |12 |a4 |
+---+---+---+
Espero que a resposta seja útil