Обсуждение различных способов удаления столбцов из DataFrames в PySpark
Вступление
Удаление столбцов из DataFrames - одна из наиболее часто выполняемых задач в PySpark. В сегодняшнем кратком руководстве мы рассмотрим несколько различных способов удаления столбцов из PySpark DataFrame. В частности, мы обсудим, как
- удалить один столбец
- отбросить несколько столбцов
- отмените операцию и вместо этого выберите нужные столбцы в тех случаях, когда это более удобно.
Во-первых, давайте создадим пример DataFrame, на который мы будем ссылаться в этом руководстве, чтобы продемонстрировать несколько концепций.
from pyspark.sql import SparkSession # Create an instance of spark session spark_session = SparkSession.builder \ .master('local[1]') \ .appName('Example') \ .getOrCreate() # Create an example DataFrame df = spark_session.createDataFrame( [ (1, True, 'a', 1.0), (2, True, 'b', 2.0), (3, False, 'c', 3.0), (4, False, 'd', 4.0), ], ['colA', 'colB', 'colC', 'colD'] ) df.show() +----+-----+----+----+ |colA| colB|colC|colD| +----+-----+----+----+ | 1| true| a| 1.0| | 2| true| b| 2.0| | 3|false| c| 3.0| | 4|false| d| 4.0| +----+-----+----+----+
Удаление одного столбца
Самый элегантный способ удаления столбцов - это использование функции pyspark.sql.DataFrame.drop
, которая возвращает новый DataFrame с указанными удаляемыми столбцами:
df = df.drop('colC') df.show() +----+-----+----+ |colA| colB|colD| +----+-----+----+ | 1| true| 1.0| | 2| true| 2.0| | 3|false| 3.0| | 4|false| 4.0| +----+-----+----+
Обратите внимание, что если указанный столбец не существует в столбце, это будет бездействие, означающее, что операция не завершится ошибкой и не будет иметь никакого эффекта.
Удаление нескольких столбцов
Обычно вам может потребоваться сбросить несколько столбцов за один раз. В этом случае вы можете указать столбцы, которые хотите удалить, в виде списка, а затем распаковать их, используя звездочку, как показано ниже.
cols_to_drop = ['colB', 'colC'] df = df.drop(*cols_to_drop) df.show() +----+----+ |colA|colD| +----+----+ | 1| 1.0| | 2| 2.0| | 3| 3.0| | 4| 4.0| +----+----+
Изменяя логику
В некоторых случаях может быть удобнее отменить операцию перетаскивания и фактически выбрать только подмножество столбцов, которые вы хотите сохранить. Например, если количество столбцов, которые вы хотите удалить, больше, чем количество столбцов, которые вы хотите сохранить в итоговом DataFrame, тогда имеет смысл вместо этого выполнить выбор.
В качестве примера представьте, что мы хотим сохранить только один столбец из приведенного выше DataFrame. В этом случае имеет смысл просто выбрать этот столбец, а не отбрасывать остальные 3 столбца:
df = df.select('colA') df.show() +----+ |colA| +----+ | 1| | 2| | 3| | 4| +----+
Последние мысли
В сегодняшнем кратком руководстве мы обсудили несколько различных способов удаления столбцов из PySpark DataFrame. Помимо прямого удаления столбцов, мы также увидели, что в некоторых случаях может быть удобнее отменить операцию и фактически выбрать только те столбцы, которые вы хотите сохранить в итоговом DataFrame.
Станьте участником и читайте все новости на Medium. Ваш членский взнос напрямую поддерживает меня и других писателей, которых вы читаете. Вы также получите полный доступ ко всем историям на Medium.
Вам также может понравиться