Python 如何更新spark数据框中的特定单元格值?
我有两个数据帧。我需要从数据帧中找到一个值,并更新特定行的单元格 前 预期产出:Python 如何更新spark数据框中的特定单元格值?,python,pyspark,apache-spark-sql,Python,Pyspark,Apache Spark Sql,我有两个数据帧。我需要从数据帧中找到一个值,并更新特定行的单元格 前 预期产出: (A, 10, A1), (b, 20, NaN), (c, 30, C1) 请向我发送解决方案的详细信息,因为我刚刚开始使用spark dataframe。您可以通过两个步骤实现此结果 首先,一个leftOuterJoin将为您提供一对RDD,其中包含(a,(10,A1)) 其次,使用一个简单的映射,您可以将这些对转换为预期的结果 您可以使用以下代码: val d1 = Array(("a", "10"),
(A, 10, A1), (b, 20, NaN), (c, 30, C1)
请向我发送解决方案的详细信息,因为我刚刚开始使用spark dataframe。您可以通过两个步骤实现此结果
- 首先,一个
将为您提供一对RDD,其中包含leftOuterJoin
(a,(10,A1))
- 其次,使用一个简单的
,您可以将这些对转换为预期的结果映射
val d1 = Array(("a", "10"), ("b", "20"), ("c", "30"))
val rdd1= sc.parallelize(d1)
val df1 = rdd1.toDF("key","val")
val d2 = Array(("a", "A1"), ("c", "C1"))
val rdd2 = sc.parallelize(d2)
val df2 = rdd2.toDF("key","div")
val res = df1.join(df2,Seq("key"),"left_outer")
res.show()
Spark数据帧是不可变的,因此从技术上讲,您无法更新任何值。您需要做的是使用一些转换创建一个具有所需值的新数据帧。
val d1 = Array(("a", "10"), ("b", "20"), ("c", "30"))
val rdd1= sc.parallelize(d1)
val df1 = rdd1.toDF("key","val")
val d2 = Array(("a", "A1"), ("c", "C1"))
val rdd2 = sc.parallelize(d2)
val df2 = rdd2.toDF("key","div")
val res = df1.join(df2,Seq("key"),"left_outer")
res.show()