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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。