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

时间:2018-01-05 09:28:45

标签: 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。我试图使用UDFS但是是一个未知的字符串。我无法理解。

注意:在此代码列中,只有两个字符串。一个将是“NA”,另一个可以是我们的情况GSTR是另一个字符串

预期输出

1,GSTR

2,GSTR

3,GSTR

4,GSTR

5,GSTR

1 个答案:

答案 0 :(得分:1)

我们可以使用除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|
+---+----+

希望这有帮助。