gpt4 book ai didi

apache-spark - Spark : return null from failed regexp_extract()

转载 作者:行者123 更新时间:2023-12-04 05:20:32 25 4
gpt4 key购买 nike

假设您尝试从数据帧的列中提取子字符串。 regexp_extract()如果字段本身为空,则返回空值,但如果字段不为空但找不到表达式,则返回空字符串。对于后一种情况,您如何返回空值?

df = spark.createDataFrame([(None),('foo'),('foo_bar')], StringType())
df.select(regexp_extract('value', r'_(.+)', 1).alias('extracted')).show()

# +---------+
# |extracted|
# +---------+
# | null|
# | |
# | bar|
# +---------+

最佳答案

我不确定 regexp_extract()永远可以回来 None对于 String 类型。你可以做的一件事是用 None 替换空字符串使用用户定义的函数:

from pyspark.sql.functions import regexp_extract, udf
from pyspark.sql.types import StringType

df = spark.createDataFrame([(None),('foo'),('foo_bar')], StringType())
toNoneUDF = udf(lambda val: None if val == "" else val, StringType())
new_df = df.select(regexp_extract('value', r'_(.+)', 1).alias('extracted'))
new_df.withColumn("extracted", toNoneUDF(new_df.extracted)).show()

关于apache-spark - Spark : return null from failed regexp_extract(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com