2016-10-24 69 views
-1

這行代碼是不工作的方式,我認爲它會:錯誤Apache中的星火多withColumn

val df2 = df1 
    .withColumn("email_age", when('age_of_email <= 60, 1)) 
    .withColumn("email_age", when('age_of_email <= 120, 2)) 
    .withColumn("email_age", when('age_of_email <= 180, 3).otherwise(4)) 

我有成千上萬的DF1線與age_of_email是小於60和/或小於120,但我所有的線都得到歸類爲或:

任何深入瞭解爲什麼發生這種情況?

+0

我們應該如何回答你的問題,而不知道你使用的是什麼庫或任何東西...... – Falmarri

+0

這是你在找什麼? :'import org.apache.spark.sql._','import org.apache.spark.ml._' –

+1

爲什麼你會認爲我們知道你在使用spark? – Falmarri

回答

1

正如人們在評論中所說的那樣,使用withColumn以及已經在數據框中的列名將替換該列。

我認爲你想達到你可在一個單列使用不同的列名的每個分類或只是在連接when()

val df2 = df1.withColumn("email_age", when('age_of_email <= 60, 1) 
            .when('age_of_email <= 120, 2) 
            .when('age_of_email <= 180, 3) 
            .otherwise(4)) 

我想你是知道的類別是什麼子集的類別3

+0

這是完美的,謝謝! –