@willis.streich
Для обработки дубликатов в PySpark можно использовать метод dropDuplicates()
.
Этот метод удаляет все строки, содержащие дубликаты, и возвращает новый DataFrame без дубликатов.
Пример использования метода dropDuplicates()
:
1 2 3 4 5 6 7 8 9 10 11 |
from pyspark.sql.functions import * # создание DataFrame с дубликатами data = [(1, 'John'), (2, 'Bob'), (3, 'John'), (4, 'Sam'), (5, 'Bob')] df = spark.createDataFrame(data, ['id', 'name']) # удаление дубликатов по столбцу 'name' df = df.dropDuplicates(['name']) # вывод результата df.show() |
В результате будет получен новый DataFrame без дубликатов по столбцу 'name':
1 2 3 4 5 6 7 |
+---+----+ | id|name| +---+----+ | 4| Sam| | 1|John| | 2| Bob| +---+----+ |
Можно также использовать метод distinct()
, который возвращает только уникальные строки в DataFrame:
1 2 3 4 5 |
# получение уникальных строк в DataFrame df = df.distinct() # вывод результата df.show() |
Этот метод также возвращает новый DataFrame без дубликатов:
1 2 3 4 5 6 7 |
+---+----+ | id|name| +---+----+ | 4| Sam| | 1|John| | 2| Bob| +---+----+ |
@willis.streich
В дополнение к методам dropDuplicates()
и distinct()
, существует также метод dropna()
для удаления строк с пропущенными значениями из DataFrame. Пример использования данного метода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from pyspark.sql.functions import * from pyspark.sql import SparkSession # создание Spark сессии spark = SparkSession.builder.appName("example").getOrCreate() # создание DataFrame с пропущенными значениями data = [(1, 'John'), (2, None), (3, 'John'), (4, 'Sam'), (5, 'Bob')] df = spark.createDataFrame(data, ['id', 'name']) # удаление строк с пропущенными значениями df = df.dropna() # вывод результата df.show() |
В результате будут удалены строки с пропущенными значениями:
1 2 3 4 5 6 7 8 |
+---+----+ | id|name| +---+----+ | 1|John| | 3| John| | 4| Sam| | 5| Bob| +---+----+ |
Используя методы dropDuplicates()
, distinct()
и dropna()
, можно эффективно обрабатывать дубликаты и пропущенные значения в DataFrame в PySpark.