📜  根据 PySpark DataFrame 中的特定列删除重复行(1)

📅  最后修改于: 2023-12-03 14:55:39.228000             🧑  作者: Mango

根据 PySpark DataFrame 中的特定列删除重复行

在 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 中根据特定列删除重复行的介绍。