PySpark 列的withField(~)
方法用於添加或更新嵌套字段值。
參數
1. fieldName
| string
嵌套字段的名稱。
2. col
| Column
要添加或更新的新列值。
返回值
PySpark 列 (pyspark.sql.column.Column
)。
例子
考慮以下帶有嵌套行的 PySpark DataFrame:
from pyspark.sql import Row
data = [
Row(name="Alex", age=20, friend=Row(name="Bob",age=30)),
Row(name="Cathy", age=40, friend=Row(name="Doge",age=40))
]
df = spark.createDataFrame(data)
df.show()
+-----+---+----------+
| name|age| friend|
+-----+---+----------+
| Alex| 20| {Bob, 30}|
|Cathy| 40|{Doge, 40}|
+-----+---+----------+
這裏, friend
列包含嵌套的 Row
,可以通過打印模式來確認:
df.printSchema()
root
|-- name: string (nullable = true)
|-- age: long (nullable = true)
|-- friend: struct (nullable = true)
| |-- name: string (nullable = true)
| |-- age: long (nullable = true)
更新 PySpark 中的嵌套行
要更新嵌套行,請使用 withField(~)
方法,如下所示:
import pyspark.sql.functions as F
updated_col = df["friend"].withField("name", F.lit("BOB"))
df.withColumn("friend", updated_col).show()
+-----+---+---------+
| name|age| friend|
+-----+---+---------+
| Alex| 20|{BOB, 30}|
|Cathy| 40|{BOB, 40}|
+-----+---+---------+
請注意以下事項:
-
我們正在使用常量字符串
"BOB"
更新friend
列的name
字段。 -
F.lit("BOB")
返回一個Column
對象,其值用字符串"BOB"
填充。 -
withColumn(~)
方法將 DataFrame 的friend
列替換為withField(~)
返回的更新列。
使用 PySpark 中的原始值更新嵌套行
要使用原始值更新嵌套行,請使用 withField(~)
方法,如下所示:
updated_col = df["friend"].withField("name", F.upper("friend.name"))
df.withColumn("friend", updated_col).show()
+-----+---+----------+
| name|age| friend|
+-----+---+----------+
| Alex| 20| {BOB, 30}|
|Cathy| 40|{DOGE, 40}|
+-----+---+----------+
在這裏,我們使用 F.upper("friend.name")
將 friend
列的 name
字段大寫,這會返回 Column
對象。
在 PySpark 的嵌套行中添加新字段值
withField(~)
列還可用於在嵌套行中添加新字段值:
updated_col = df["friend"].withField("upper_name", F.upper("friend.name"))
df_new = df.withColumn("friend", updated_col)
df_new.show()
+-----+---+----------------+
| name|age| friend|
+-----+---+----------------+
| Alex| 20| {Bob, 30, BOB}|
|Cathy| 40|{Doge, 40, DOGE}|
+-----+---+----------------+
現在,檢查新的 PySpark DataFrame 的架構:
df_new.printSchema()
root
|-- name: string (nullable = true)
|-- age: long (nullable = true)
|-- friend: struct (nullable = true)
| |-- name: string (nullable = true)
| |-- age: long (nullable = true)
| |-- upper_name: string (nullable = true)
我們可以看到新的嵌套字段upper_name
已添加!
相關用法
- Python PySpark Column isNotNull方法用法及代碼示例
- Python PySpark Column getItem方法用法及代碼示例
- Python PySpark Column rlike方法用法及代碼示例
- Python PySpark Column cast方法用法及代碼示例
- Python PySpark Column endswith方法用法及代碼示例
- Python PySpark Column dropFields方法用法及代碼示例
- Python PySpark Column alias方法用法及代碼示例
- Python PySpark Column isNull方法用法及代碼示例
- Python PySpark Column otherwise方法用法及代碼示例
- Python PySpark Column contains方法用法及代碼示例
- Python PySpark Column startswith方法用法及代碼示例
- Python PySpark Column isin方法用法及代碼示例
- Python PySpark Column substr方法用法及代碼示例
- Python Collections.UserString用法及代碼示例
- Python Collections.UserDict用法及代碼示例
- Python Collections.UserList用法及代碼示例
- Python Django Collate用法及代碼示例
- Python Django ContentTypeManager用法及代碼示例
- Python Condition release()用法及代碼示例
- Python Condition notify()用法及代碼示例
- Python Django ContextMixin.get_context_data用法及代碼示例
- Python Condition wait()用法及代碼示例
- Python Django Coalesce用法及代碼示例
- Python Django Cot用法及代碼示例
- Python Django CoordTransform用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark Column | withField method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。