Spark 教程

Spark SQL

Spark 笔记

Spark MLlib

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/spark-dataframe-fill-null-values.html

spark dataframe 填充列值为 null(空值)的方式

Spark DataFrame 原理及操作详解 Spark DataFrame 原理及操作详解


在实际开发中,常常遇到多个 dataframe 关联(即 join)操作后,有些字段或列的值为 null 的情况,我们需要对列值为空进行填充数据,通过 dataframe.fillna() 或 dataframe.na.fill() 函数即可完成,fill 函数底层也是调用 fillna

解决方式

这里列出了 fillna 函数填充指定列的示例:

from pyspark.sql import SparkSession

spark_session = SparkSession.builder \
    .appName('knowledgedict-dataframe') \
    .master('local') \
    .getOrCreate()

df = spark_session.createDataFrame(
    schema=['id', 'impression', 'click', 'ctr', 'city', 'content'],
    data=[
        (1, 100, 5, 0.05, 'beijing', ['product']),
        (None, 10, 3, 0.3, 'beijing', ['product', 'article']),
        (3, None, 5, 0.1, 'shanghai', ['article', 'person'])
    ]
)

df.show()
df = df.fillna({'id': 188})
df.show()

将 第二行 id 列为 null 的值,替换为字典映射的 188,输出如下:

+----+----------+-----+----+--------+------------------+
|  id|impression|click| ctr|    city|           content|
+----+----------+-----+----+--------+------------------+
|   1|       100|    5|0.05| beijing|         [product]|
|null|        10|    3| 0.3| beijing|[product, article]|
|   3|      null|    5| 0.1|shanghai| [article, person]|
+----+----------+-----+----+--------+------------------+

+---+----------+-----+----+--------+------------------+
| id|impression|click| ctr|    city|           content|
+---+----------+-----+----+--------+------------------+
|  1|       100|    5|0.05| beijing|         [product]|
|188|        10|    3| 0.3| beijing|[product, article]|
|  3|      null|    5| 0.1|shanghai| [article, person]|
+---+----------+-----+----+--------+------------------+

fillna 函数具体形式如下:

def fillna(self, value, subset=None)

value 参数可以接收 int, long, float, string, bool 固定值设置,也可以接收映射字段设置的 dict 字典类型。

subset 参数主要和 value 的固定值设置一起使用,设置要起作用的字段,如果指定的字段类型和设置值的类型不匹配,该字段的设置忽略。

在 spark 中,过滤 dataframe 对象数据的某个列为 null 值(即空值)的行数据可以使用 filter 函数或 where ...
SparkDataFrame是2015年3月13日发布的Spark1.Transformation操作:即转换操作,实际上是在构建一个执行计 ...
在基于 pandas 的 DataFrame 对象进行数据处理时(如样本特征的缺省值处理),可以使用 DataFrame 对象的 filln ...
spark dataframe 的 fillna 函数等同于 na.fill(),na.fill 函数底层也是调用 fillna,它的作用是 ...
Lombok是一个用于Java编程语言的开源项目,它旨在通过自动生成样板代码来简化Java代码的编写,从而提高开发人员的生产力。在您的问题中 ...