如何在pyspark数据帧中一行替换regexp_?

如何在pyspark数据帧中一行替换regexp_?,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我有一个pyspark数据帧列 df.groupBy('Gender').count().show() (5) Spark Jobs +------+------+ |Gender| count| +------+------+ | F| 44015| | null| 42175| | M|104423| | | 1| +------+------+ 我正在做regexp\u替换 #df = df.fillna({'Gender':'missing'}) d

我有一个pyspark数据帧列

df.groupBy('Gender').count().show()
(5) Spark Jobs
+------+------+
|Gender| count|
+------+------+
|     F| 44015|
|  null| 42175|
|     M|104423|
|      |     1|
+------+------+
我正在做regexp\u替换

#df = df.fillna({'Gender':'missing'})
df = df.withColumn('Gender', regexp_replace('Gender', 'F','Female'))
df = df.withColumn('Gender', regexp_replace('Gender', 'M','Male'))
df = df.withColumn('Gender', regexp_replace('Gender', ' ','missing'))

不是为每行调用df,而是在一行中完成吗?

如果您不想使用
regexp\u replace
三次,您可以在/when/other
子句时使用

from pyspark.sql import functions as F
from pyspark.sql.functions import when

df.withColumn("Gender", F.when(F.col("Gender")=='F',F.lit("Female"))\
              .when(F.col("Gender")=='M',F.lit("Male"))\
              .otherwise(F.lit("missing"))).show()

+-------+------+
| Gender| count|
+-------+------+
| Female| 44015|
|missing| 42175|
|   Male|104423|
|missing|     1|
+-------+------+
或者,您可以在一行中替换三个
regexp\u
,如下所示:

from pyspark.sql.functions import regexp_replace
df.withColumn('Gender', regexp_replace(regexp_replace(regexp_replace('Gender', 'F','Female'),'M','Male'),' ','missing')).show()

+-------+------+
| Gender| count|
+-------+------+
| Female| 44015|
|   null| 42175|
|   Male|104423|
|missing|     1|
+-------+------+
我认为
当/否则
应优于3个
regexp\u replace
函数,因为您也需要使用
fillna