📅  最后修改于: 2023-12-03 15:21:53.540000             🧑  作者: Mango
在 PySpark 中,我们可以使用 dropDuplicates()
函数从 DataFrame 中删除重复项。该函数需要指定任意数量的列名作为重复项的参照列,将根据这些列的值来判断是否为重复项。以下是一个简单的例子:
from pyspark.sql.functions import col
# 创建一个简单的 DataFrame
data = [("Alice", 25), ("Bob", 30), ("Alice", 25)]
df = spark.createDataFrame(data, ["name", "age"])
# 按 name 和 age 列删除重复项
df = df.dropDuplicates(["name", "age"])
# 打印处理后的 DataFrame
df.show()
输出结果为:
+-----+---+
| name|age|
+-----+---+
|Alice| 25|
| Bob| 30|
+-----+---+
在这个例子中,我们首先使用 createDataFrame()
函数创建了一个包含重复项的 DataFrame,然后使用 dropDuplicates()
函数指定了 name
和 age
两列作为重复项的参照列,并将结果存储到了一个新的 DataFrame 中。最后我们使用 show()
函数打印处理后的 DataFrame。
需要注意的是,dropDuplicates()
函数将返回一个新的 DataFrame,原始的 DataFrame 不会被修改。如果你想要修改原始的 DataFrame,你需要将结果重新赋值给原始的 DataFrame。
此外,dropDuplicates()
函数还接受一个可选参数 subset
,用于指定参照列的集合。如果你有一个由列名字符串组成的列表,你可以将其传递给 subset
参数,而不是将每个列名作为单独的参数传递。以下是一个例子:
from pyspark.sql.functions import col
# 创建一个简单的 DataFrame
data = [("Alice", 25, "female"), ("Bob", 30, "male"), ("Alice", 25, "female")]
df = spark.createDataFrame(data, ["name", "age", "gender"])
# 按 name 和 age 列删除重复项
df = df.dropDuplicates(subset=["name", "age"])
# 打印处理后的 DataFrame
df.show()
输出结果为:
+-----+---+------+
| name|age|gender|
+-----+---+------+
|Alice| 25|female|
| Bob| 30| male|
+-----+---+------+
在这个例子中,我们使用了 subset
参数指定了参照列的集合。
希望这篇介绍对大家有所帮助,如有疑问或需要进一步了解 PySpark,请查阅 PySpark 文档或阅读相关书籍。