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

How to replace a string in a column with other string from the same column

我有以下数据框。

id,code

1,GSTR

2,GSTR

3,NA

4,NA

5,NA

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

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

注意:在此代码列中只有两个字符串。一个是 "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|
+---+----+

希望对您有所帮助。