假设您尝试从数据帧的列中提取子字符串。regexp_extract()如果字段本身为 null,则返回 null;如果字段不为 null 但未找到表达式,则返回空字符串。对于后一种情况如何返回空值?
df = spark.createDataFrame([(None),('foo'),('foo_bar')], StringType())
df.select(regexp_extract('value', r'_(.+)', 1).alias('extracted')).show()
# +---------+
# |extracted|
# +---------+
# | null|
# | |
# | bar|
# +---------+
Run Code Online (Sandbox Code Playgroud) 假设您有一个包含一些空值的 Spark 数据帧,并且您想用另一列的值替换一列的值(如果存在)。在 Python/Pandas 中,您可以使用 fillna() 函数很好地完成此操作:
df = spark.createDataFrame([('a', 'b', 'c'),(None,'e', 'f'),(None,None,'i')], ['c1','c2','c3'])
DF = df.toPandas()
DF['c1'].fillna(DF['c2']).fillna(DF['c3'])
Run Code Online (Sandbox Code Playgroud)
如何使用 Pyspark 做到这一点?