2016-10-24 70 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

这是完美的,谢谢! –