PySpark DataFrame 的 replace(~)
方法返回一個新的 DataFrame,其中某些值被替換。我們還可以指定要在哪些列中執行替換。
參數
1.to_replace
| boolean
、number
、string
、list
或 dict
| optional
要替換的值。
2. value
| boolean
、number
、string
或 None
| optional
替換 to_replace
的新值。
3. subset
| list
| optional
要關注的列。默認情況下,將檢查所有列是否進行替換。
返回值
PySpark 數據幀。
例子
考慮以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 25], ["Bob", 30], ["Cathy", 40]], ["name", "age"])
df.show()
+-----+---+
| name|age|
+-----+---+
| Alex| 25|
| Bob| 30|
|Cathy| 40|
+-----+---+
替換單列的值
要將 name
列中的值 "Alex"
替換為 "ALEX"
:
df.replace("Alex", "ALEX", "name").show()
+-----+---+
| name|age|
+-----+---+
| ALEX| 25|
| Bob| 30|
|Cathy| 40|
+-----+---+
請注意,返回了一個新的PySpark DataFrame,並且原始DataFrame 保持不變。
替換單個列的多個值
要將 name
列中的值 "Alex"
替換為 "ALEX"
,將 "Bob"
替換為 "BOB"
:
df.replace(["Alex","Bob"], ["ALEX","BOB"], "name").show()
+-----+---+
| name|age|
+-----+---+
| ALEX| 25|
| BOB| 30|
|Cathy| 40|
+-----+---+
用單個值替換多個值
要將 name
列中的值 "Alex"
和 "Bob"
替換為 "SkyTowner"
:
df.replace(["Alex","Bob"], "SkyTowner", "name").show()
+---------+---+
| name|age|
+---------+---+
|SkyTowner| 25|
|SkyTowner| 30|
| Cathy| 40|
+---------+---+
替換整個DataFrame中的值
要將整個 DataFrame 中的值 "Alex"
和 "Bob"
替換為 "SkyTowner"
:
df.replace(["Alex","Bob"], "SkyTowner").show()
+---------+---+
| name|age|
+---------+---+
|SkyTowner| 25|
|SkyTowner| 30|
| Cathy| 40|
+---------+---+
在這裏,請注意我們沒有指定 subset
選項。
使用字典替換值
要使用字典在 name
列中將 "Alex"
替換為 "ALEX"
,並將 "Bob"
替換為 "BOB"
:
df.replace({
"Alex": "ALEX",
"Bob": "Bob",
}, subset=["name"]).show()
警告
不允許混合類型更換。例如,以下行為是不允許的:
df.replace({
"Alex": "ALEX",
30: 99,
}, subset=["name","age"]).show()
ValueError: Mixed type replacements are not supported
在這裏,我們執行一項字符串替換和一項整數替換。由於這是 mix-typed 替換,因此 PySpark 會引發錯誤。為了避免此錯誤,請分別執行兩次替換。
替換多列中的多個值
考慮以下 DataFrame :
df = spark.createDataFrame([["aa", "AA"], ["bb", "BB"]], ["col1", "col2"])
df.show()
+----+----+
|col1|col2|
+----+----+
| aa| AA|
| bb| BB|
+----+----+
要替換 col1
和 col2
中的某些值:
df.replace({
"AA": "@@@",
"bb": "###",
}, subset=["col1","col2"]).show()
+----+----+
|col1|col2|
+----+----+
| aa| @@@|
| ###| BB|
+----+----+
相關用法
- Python Pandas DataFrame replace方法用法及代碼示例
- Python PySpark DataFrame repartition方法用法及代碼示例
- Python Pandas DataFrame reset_index方法用法及代碼示例
- Python Pandas DataFrame reorder_levels方法用法及代碼示例
- Python Pandas DataFrame resample方法用法及代碼示例
- Python Pandas DataFrame reindex方法用法及代碼示例
- Python Pandas DataFrame rename_axis方法用法及代碼示例
- Python Pandas DataFrame rename方法用法及代碼示例
- Python Pandas DataFrame rank方法用法及代碼示例
- Python Pandas DataFrame rdiv方法用法及代碼示例
- Python Pandas DataFrame radd方法用法及代碼示例
- Python PySpark DataFrame rdd屬性用法及代碼示例
- Python Pandas DataFrame rsub方法用法及代碼示例
- Python Pandas DataFrame round方法用法及代碼示例
- Python PySpark DataFrame randomSplit方法用法及代碼示例
- Python Pandas DataFrame rolling方法用法及代碼示例
- Python Pandas DataFrame rpow方法用法及代碼示例
- Python Pandas DataFrame rfloordiv方法用法及代碼示例
- Python Pandas DataFrame rtruediv方法用法及代碼示例
- Python Pandas DataFrame rmod方法用法及代碼示例
- Python Pandas DataFrame rmul方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark DataFrame | replace method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。