使用Python在同一spark数据框中的两行之间减去数据

问题描述

我有两行的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用例,使用起来也很安全,不用担心如果字段损坏了就不会出现异常。