PySpark DataFrame 的 fillna(~) 方法将 null 值替换为您指定的值。我们还可以选择列来执行填充。
参数
1.value | int 或 float 或 string 或 boolean 或 dict
用于填充 null 值的值。对于 dict ,键将是列标签,值将是该列的填充值。如果传递dict,则忽略subset。
2. subset | string 或 tuple 或 list | optional
要考虑填充的列。默认情况下,将考虑与 value 类型相同的所有列。
返回值
PySpark 数据帧 (pyspark.sql.dataframe.DataFrame)。
例子
考虑以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 25, None], [None, 30, 200], ["Cathy", None, 100]], ["name", "age", "salary"])
df.show()
+-----+----+------+
| name| age|salary|
+-----+----+------+
| Alex|  25|  null|
| null|  30|   200|
|Cathy|null|   100|
+-----+----+------+填充整个PySpark DataFrame中的缺失值
要使用 50 填充所有缺失值:
df.fillna(50).show()
+-----+---+------+
| name|age|salary|
+-----+---+------+
| Alex| 25|    50|
| null| 30|   200|
|Cathy| 50|   100|
+-----+---+------+在这里,请注意 null 值在 name 列中的完整性。这是因为我们为 value 参数传入了 50,该参数是数字类型。但是,name 列是字符串类型,由于数据类型不匹配,null 值未填充到name 列。
使用不同列的不同值填充缺失值
要使用 50 填充 age 中的 null 值,以及使用 300 填充 salary 中的值:
df.fillna({"age":50, "salary":300}).show()
+-----+---+------+
| name|age|salary|
+-----+---+------+
| Alex| 25|   300|
| null| 30|   200|
|Cathy| 50|   100|
+-----+---+------+对不同列使用相同的值填充缺失值
要使用 50 填充 age 和 salary 列的 null 值:
df.fillna(50, ["age","salary"]).show()
+-----+---+------+
| name|age|salary|
+-----+---+------+
| Alex| 25|    50|
| null| 30|   200|
|Cathy| 50|   100|
+-----+---+------+使用另一列的值填充缺失值
不幸的是,fillna(-) 方法不允许用另一列的值填充缺失值。
考虑以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 25, None], [None, 30, 200], ["Cathy", None, 100]], ["name", "age", "salary"])
df.show()
+-----+----+------+
| name| age|salary|
+-----+----+------+
| Alex|  25|  null|
| null|  30|   200|
|Cathy|null|   100|
+-----+----+------+要将 age 中的缺失值替换为 salary 中的值,我们可以使用 PySpark 的  when(-)  方法:
df.withColumn("age", F.when(F.col("age").isNull(), F.col("salary")).otherwise(F.col("age"))).show()
+-----+---+------+
| name|age|salary|
+-----+---+------+
| Alex| 25|  null|
| null| 30|   200|
|Cathy|100|   100|
+-----+---+------+相关用法
- Python Pandas DataFrame fillna方法用法及代码示例
- Python PySpark DataFrame filter方法用法及代码示例
- Python Pandas DataFrame filter方法用法及代码示例
- Python Pandas DataFrame first_valid_index方法用法及代码示例
- Python Pandas DataFrame first方法用法及代码示例
- Python Pandas DataFrame floordiv方法用法及代码示例
- Python PySpark DataFrame foreach方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
- Python Pandas DataFrame max方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
- Python Pandas DataFrame agg方法用法及代码示例
- Python Pandas DataFrame copy方法用法及代码示例
- Python Pandas DataFrame pow方法用法及代码示例
- Python Pandas DataFrame insert方法用法及代码示例
- Python Pandas DataFrame lt方法用法及代码示例
- Python Pandas DataFrame all方法用法及代码示例
- Python Pandas DataFrame unstack方法用法及代码示例
- Python Pandas DataFrame mean方法用法及代码示例
- Python Pandas DataFrame tz_convert方法用法及代码示例
- Python Pandas DataFrame isin方法用法及代码示例
- Python PySpark DataFrame collect方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark DataFrame | fillna method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
