问题描述
我有两行的spark数据框。该数据框包含数字和字符串类型的值。我需要从row1减去row2的数值,同时保持字符串值和列名相同。这需要显示在同一数据框中的新行中。我在代码中使用Spark Python。请帮助我
解决方法
scala
val df = Seq((5,"10"),(4,"fail_string")).toDF("a","b")
val result = df.withColumn("result",$"b" - $"a")
result.show()
pyspark:
df = spark.createDataFrame([(5,(1,"fail")],"a int,b string")
result = df.withColumn("result",col("b") - col("a"))
result.show()
结果将是:
+---+-----------+------+
| a| b|result|
+---+-----------+------+
| 5| 10| 5.0|
| 4|fail_string| null|
+---+-----------+------+
如您所见,这是一个非常简单的spark用例,使用起来也很安全,不用担心如果字段损坏了就不会出现异常。