當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PySpark DataFrame fillna方法用法及代碼示例


PySpark DataFrame 的 fillna(~) 方法將 null 值替換為您指定的值。我們還可以選擇列來執行填充。

參數

1.value | intfloatstringbooleandict

用於填充 null 值的值。對於 dict ,鍵將是列標簽,值將是該列的填充值。如果傳遞dict,則忽略subset

2. subset | stringtuplelist | 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 填充 agesalary 列的 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|
+-----+---+------+

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark DataFrame | fillna method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。