【发布时间】:2017-12-06 15:04:58
【问题描述】:
例如说我有一个 df
from pyspark.sql import Row
row = Row("v", "x", "y", "z")
df = sc.parallelize([
row("p", 1, 2, 3.0), row("NULL", 3, "NULL", 5.0),
row("NA", None, 6, 7.0), row(float("Nan"), 8, "NULL", float("NaN"))
]).toDF()
现在我想用 pyspark null (None) 值替换 NULL、NA 和 NaN。如何将多个列一起实现。
from pyspark.sql.functions import when, lit, col
def replace(column, value):
return when(column != value, column).otherwise(lit(None))
df = df.withColumn("v", replace(col("v"), "NULL"))
df = df.withColumn("v", replace(col("v"), "NaN"))
df = df.withColumn("v", replace(col("v"), "NaN"))
我试图避免为所有列编写此内容,因为我的数据框中可以有任意数量的列。
感谢您的帮助。谢谢!
【问题讨论】:
标签: pyspark