📜  在 PySpark 中加入 DataFrame 后删除重复的列(1)

📅  最后修改于: 2023-12-03 15:23:15.739000             🧑  作者: Mango

在 PySpark 中加入 DataFrame 后删除重复的列

在 PySpark 中,经常需要加入多个 DataFrame 进行合并,但是会导致重复的列出现。本文将介绍如何在加入后删除重复的列。

准备数据

首先,我们先准备两个 DataFrame,它们有一个共同的列 id,并且存在重复的列 name

from pyspark.sql.functions import lit
from pyspark.sql.types import IntegerType, StringType
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("remove_duplicates").getOrCreate()

df1 = spark.createDataFrame([
    (1, "Alice", 20),
    (2, "Bob", 25),
    (3, "Caro", 30)
], ["id", "name", "age"])

df2 = spark.createDataFrame([
    (1, "Dave", 32),
    (2, "Ella", 27),
    (3, "Frank", 35)
], ["id", "name", "age"])

df2 = df2.withColumn("city", lit("New York"))
加入 DataFrame

我们可以使用 union() 方法将两个 DataFrame 合并。

df = df1.union(df2)
df.show()

输出:

+---+-----+---+--------+
| id| name|age|    city|
+---+-----+---+--------+
|  1|Alice| 20|    null|
|  2|  Bob| 25|    null|
|  3| Caro| 30|    null|
|  1| Dave| 32|New York|
|  2| Ella| 27|New York|
|  3|Frank| 35|New York|
+---+-----+---+--------+

注意到有两个名为 name 的列,需要删除其中一个。

删除重复的列

我们可以使用 dropDuplicates() 方法删除重复的列。

df = df.dropDuplicates(["id"])
df.show()

输出:

+---+-----+---+--------+
| id| name|age|    city|
+---+-----+---+--------+
|  1|Alice| 20|    null|
|  2|  Bob| 25|    null|
|  3| Caro| 30|    null|
+---+-----+---+--------+

现在我们成功删除了重复的列 name

总结

以上是在 PySpark 中加入 DataFrame 后删除重复的列的方法,通过 dropDuplicates() 方法可以简单快捷地实现。