📅  最后修改于: 2023-12-03 15:23:15.739000             🧑  作者: Mango
在 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"))
我们可以使用 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()
方法可以简单快捷地实现。