当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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