我想做这样的事情:
df.replace('empty-value', None, 'NAME')
基本上,我想用 NULL 替换一些值。但它在这个函数中不接受 None 。我怎样才能做到这一点?
最佳答案
这将取代 empty-value
与 None
在您的 name
柱子:
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType
df = sc.parallelize([(1, "empty-value"), (2, "something else")]).toDF(["key", "name"])
new_column_udf = udf(lambda name: None if name == "empty-value" else name, StringType())
new_df = df.withColumn("name", new_column_udf(df.name))
new_df.collect()
输出:
[Row(key=1, name=None), Row(key=2, name=u'something else')]
通过使用旧名称作为
withColumn
中的第一个参数,它实际上取代了旧的 name
UDF 输出生成的新列。
关于apache-spark - 如何在 PySpark 中用 NULL 替换字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36897658/