📅  最后修改于: 2023-12-03 14:55:39.228000             🧑  作者: Mango
在 PySpark 中,我们可以使用 dropDuplicates()
方法来删除 DataFrame 中的重复行。但是有时候我们希望按照特定列来执行这个操作,这时候就需要使用 dropDuplicates()
方法的一个变体。
该变体需要传入一个参数,即一个字符串数组,用于指定按照哪些列来删除重复行。下面是一个例子:
from pyspark.sql.functions import col
# 创建 DataFrame
df = spark.createDataFrame([
(1, "Alice", 25),
(2, "Bob", 28),
(3, "Charlie", 22),
(1, "Alice", 30),
(2, "Bob", 28),
(4, "David", 27)
], ["id", "name", "age"])
# 按照 name 列删除重复行
df.dropDuplicates(["name"]).show()
该代码会输出以下内容:
+---+-------+---+
| id| name|age|
+---+-------+---+
| 2| Bob| 28|
| 1| Alice| 25|
| 3|Charlie| 22|
| 4| David| 27|
+---+-------+---+
在这个例子中,我们按照 name 列来删除重复行。注意,name 列值为 "Alice" 的行只保留了一行。
还可以使用 col()
函数来指定列名,如下所示:
# 按照 id 和 name 列删除重复行
df.dropDuplicates([col("id"), col("name")]).show()
该代码会输出以下内容:
+---+-------+---+
| id| name|age|
+---+-------+---+
| 3|Charlie| 22|
| 2| Bob| 28|
| 4| David| 27|
| 1| Alice| 25|
| 1| Alice| 30|
+---+-------+---+
在这个例子中,我们按照 id 和 name 列来删除重复行。注意,id 和 name 列值都相同的行只保留了一行。
以上就是关于在 PySpark DataFrame 中根据特定列删除重复行的介绍。