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,并且只取第一个值来动态获取字符串。我应该为每一列编码吗?我们不能让它充满活力吗?让我们。