数据框更改前n行

时间:2017-03-16 22:56:18

标签: scala apache-spark apache-spark-sql

我有一个数据框,我想添加另一个列,前n行是一个值,其余的是另一列中的值...像这样的

frame.select("*")
.withColumn("newColumn", if(row number < 5) "hello, world" else col("someth_else"))

1 个答案:

答案 0 :(得分:3)

If you are using spark >= 2.x,您可以使用monotonically_increasing_id()为数据框创建行索引,然后使用when.otherwise根据条件(row_number)有条件地创建新列:

val df = Seq(1,3,5,7,8).toDF("A")

df.withColumn("rn", monotonically_increasing_id()).
   withColumn("new", when($"rn" <= 2, lit("hello world")).otherwise($"A")).show

+---+---+-----------+
|  A| rn|        new|
+---+---+-----------+
|  1|  0|hello world|    
|  3|  1|hello world|
|  5|  2|hello world|
|  7|  3|          7|
|  8|  4|          8|
+---+---+-----------+