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


Python PySpark Column dropFields方法用法及代碼示例


PySpark 列的 dropFields(~) 方法返回一個新的 PySpark Column 對象,並刪除指定的嵌套字段。

參數

1. *fieldNames | string

要刪除的嵌套字段。

返回值

PySpark 專欄。

例子

考慮以下帶有一些嵌套行的 PySpark DataFrame:

data = [
 Row(name="Alex", age=20, friend=Row(name="Bob",age=30,height=150)),
 Row(name="Cathy", age=40, friend=Row(name="Doge",age=40,height=180))
]
df = spark.createDataFrame(data)
df.show()



+-----+---+---------------+
| name|age|         friend|
+-----+---+---------------+
| Alex| 20| {Bob, 30, 150}|
|Cathy| 40|{Doge, 40, 180}|
+-----+---+---------------+

這個PySpark DataFrame的架構如下:

df.printSchema()



root
 |-- name: string (nullable = true)
 |-- age: long (nullable = true)
 |-- friend: struct (nullable = true)
 |    |-- name: string (nullable = true)
 |    |-- age: long (nullable = true)
 |    |-- height: long (nullable = true)

刪除 PySpark 列中的某些嵌套字段

要刪除 friend 下的 ageheight 字段,請使用 dropFields(~) 方法:

updated_col = df["friend"].dropFields("age", "height")
df_new = df.withColumn("friend", updated_col)
df_new.show()



+-----+---+------+
| name|age|friend|
+-----+---+------+
| Alex| 20| {Bob}|
|Cathy| 40|{Doge}|
+-----+---+------+

在此,請注意以下事項:

  • 我們使用 withColumn(~) 方法用 dropFields(~) 返回的新列更新 friend 列。

此更新的PySpark DataFrame 的架構如下:

df_new.printSchema()



root
 |-- name: string (nullable = true)
 |-- age: long (nullable = true)
 |-- friend: struct (nullable = true)
 |    |-- name: string (nullable = true)

請注意 ageheight 字段如何不再出現在 friend 下。

注意

即使您要刪除的嵌套字段不存在,也不會拋出錯誤:

updated_col = df["friend"].dropFields("ZZZZZZZZZ")
df_new = df.withColumn("friend", updated_col)
df_new.show()



+-----+---+---------------+
| name|age|         friend|
+-----+---+---------------+
| Alex| 20| {Bob, 30, 150}|
|Cathy| 40|{Doge, 40, 180}|
+-----+---+---------------+

這裏,嵌套字段"ZZZZZZZZZ"顯然不存在,但沒有拋出錯誤。

相關用法


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