Обсуждение различных способов удаления столбцов из 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.

Вам также может понравиться