Apache spark 如何用同一列中的其他字符串替换列中的字符串

Apache spark 如何用同一列中的其他字符串替换列中的字符串,apache-spark,pyspark,apache-spark-sql,spark-dataframe,pyspark-sql,Apache Spark,Pyspark,Apache Spark Sql,Spark Dataframe,Pyspark Sql,我有下面的数据框 id,code 1,GSTR 2,GSTR 3,NA 4,NA 5,NA 在这里,GSTR可能会改变,它可以是任何东西。我想用同一列中的其他字符串替换NA 在这种情况下,我想用列中存在的其他字符串替换NA,即GSTR。我试图使用UDF,但它是一个未知字符串。我搞不懂 注意:在这个代码列中只有两个字符串。一个是“NA”,另一个可以是任何东西,在我们的例子中,GSTR是另一个字符串 预期产出 1,GSTR 2,GSTR 3,GSTR 4,GSTR 5,GSTR

我有下面的数据框

id,code

1,GSTR

2,GSTR

3,NA

4,NA

5,NA
在这里,GSTR可能会改变,它可以是任何东西。我想用同一列中的其他字符串替换NA

在这种情况下,我想用列中存在的其他字符串替换NA,即GSTR。我试图使用UDF,但它是一个未知字符串。我搞不懂

注意:在这个代码列中只有两个字符串。一个是“NA”,另一个可以是任何东西,在我们的例子中,GSTR是另一个字符串

预期产出

1,GSTR

2,GSTR

3,GSTR

4,GSTR

5,GSTR

我们可以使用NA以外的不同字符串

>>> from pyspark.sql import functions as F
>>> df = spark.createDataFrame([(1,'GSTR'),(2,'GSTR'),(3,'NA'),(4,'NA'),(5,'NA')],['id','code'])
>>> df.show()
+---+----+
| id|code|
+---+----+
|  1|GSTR|
|  2|GSTR|
|  3|  NA|
|  4|  NA|
|  5|  NA|
+---+----+
>>> rstr = df.where(df.code != 'NA')[['code']].first().code
>>> df.withColumn('code',F.lit(rstr)).show()
+---+----+
| id|code|
+---+----+
|  1|GSTR|
|  2|GSTR|
|  3|GSTR|
|  4|GSTR|
|  5|GSTR|
+---+----+

希望这能有所帮助。

始终代码列只有两个值,“NA”和“some string”?是的,请务必感谢您的输入。GSTR可以是任何位置,而不仅仅是第一个位置。你能为此做些什么吗?@AshSr,代码只有两个值,我们不是只取NA行,它只给出GSTR。所有行都会有GSTR,并且只取第一个值来动态获取字符串。我应该为每一列编码吗?我们不能让它充满活力吗?让我们。