Как заменить строковое значение на NULL в PySpark?
Я хочу сделать что-то вроде этого:
df.replace('empty-value', None, 'NAME')
в принципе, я хочу заменить некоторое значение на NULL. но он не принимает ничего в этой функции. Как я могу это сделать?
2 ответов
вы можете комбинировать when
п. с NULL
литерал и типы литья следующим образом:
from pyspark.sql.functions import when, lit, col
df = sc.parallelize([(1, "foo"), (2, "bar")]).toDF(["x", "y"])
def replace(column, value):
return when(column != value, column).otherwise(lit(None))
df.withColumn("y", replace(col("y"), "bar")).show()
## +---+----+
## | x| y|
## +---+----+
## | 1| foo|
## | 2|null|
## +---+----+
Он не вводит BatchPythonEvaluation
и из-за этого должно быть значительно эффективнее, чем использование UDF.