Обсуждение различных способов переименования столбцов в PySpark DataFrames

Вступление

Переименование столбцов в PySpark DataFrames - одна из наиболее распространенных, но простых операций, которые можно применить. В сегодняшней статье мы обсудим различные способы переименования столбцов. В частности, мы рассмотрим, как это сделать, используя

  • withColumnRenamed() метод
  • selectExpr() метод
  • alias метод
  • Spark SQL

Кроме того, мы обсудим, когда использовать один метод вместо другого.

Во-первых, давайте создадим пример 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, 'a', False, 1.0),
       (2, 'b', False, 2.0),
       (3, 'c', True, 3.0),
       (4, 'd', True, 4.0),
    ],
    ['colA', 'colB', 'colC', 'colD']
)
df.show()
+----+----+-----+----+
|colA|colB| colC|colD|
+----+----+-----+----+
|   1|   a|false| 1.0|
|   2|   b|false| 2.0|
|   3|   c| true| 3.0|
|   4|   d| true| 4.0|
+----+----+-----+----+

Переименование столбцов с помощью withColumnRenamed ()

Наиболее часто используемый метод переименования столбцов - pyspark.sql.DataFrame.withColumnRenamed(). Метод возвращает новый DataFrame, переименовывая указанный столбец.

df = df.withColumnRenamed('colA', 'col_A')
df.show()
+-----+----+-----+----+
|col_A|colB| colC|colD|
+-----+----+-----+----+
|    1|   a|false| 1.0|
|    2|   b|false| 2.0|
|    3|   c| true| 3.0|
|    4|   d| true| 4.0|
+-----+----+-----+----+

Обратите внимание, что ничего не произойдет, если схема DataFrame не содержит указанный столбец. Этот метод очень полезен, когда вы хотите переименовать определенные столбцы и в то же время получить все существующие столбцы DataFrame.

Переименование столбцов с помощью selectExpr ()

Другой вариант, который у вас есть, когда дело доходит до переименования столбцов в PySpark DataFrames, - это метод pyspark.sql.DataFrame.selectExpr, который используется для проецирования выражения SQL и возврата нового DataFrame.

df = df.selectExpr('colA as col_A', 'colB as col_B')
df.show()
+-----+-----+
|col_A|col_B|
+-----+-----+
|    1|    a|
|    2|    b|
|    3|    c|
|    4|    d|
+-----+-----+

Этот метод полезен, когда вы хотите переименовать несколько столбцов одновременно, а также выбрать только подмножество столбцов (в противном случае вам придется перечислить все оставшиеся столбцы, что может расстраивать, особенно если вы имеете дело с DataFrame, имеющим много столбцов).

Переименование столбцов с помощью alias ()

pyspark.sql.DataFrame.alias метод возвращает новый DataFrame на основе указанного псевдонима.

from pyspark.sql.functions import col

df = df.select(col('colA').alias('col_A'))
df.show()
+-----+
|col_A|
+-----+
|    1|
|    2|
|    3|
|    4|
+-----+

Опять же, этот подход обычно полезен, когда вы хотите переименовать несколько столбцов за один раз, и в то же время вам нужно иметь дело с довольно небольшим количеством столбцов (или, по крайней мере, выбрать только несколько подмножеств существующих столбцов в DataFrame) .

Переименование столбцов с помощью Spark SQL

Вы даже можете использовать Spark SQL для переименования столбцов точно так же, как мы использовали метод selectExpr(). Предполагая, что вы зарегистрировали DataFrame как таблицу с помощью метода createOrReplaceTempView, вы можете запросить его с помощью Spark SQL.

df.createOrReplaceTempView("my_table")
df = spark_session.sql("SELECT colA AS col_A FROM my_table")
df.show()
+-----+
|col_A|
+-----+
|    1|
|    2|
|    3|
|    4|
+-----+

Последние мысли

В сегодняшнем кратком руководстве мы обсудили, как переименовывать столбцы в PySpark DataFrames. Мы изучили несколько различных вариантов и обсудили, когда лучше использовать один. withColumnRenamed, вероятно, является наиболее часто используемым подходом, но другие подходы, подобные SQL, такие как selectExpr, alias и Spark SQL, также являются хорошими альтернативами в некоторых случаях, особенно когда вам нужно получить только подмножество столбцов DataFrame.

Станьте участником и читайте все новости на Medium. Ваш членский взнос напрямую поддерживает меня и других писателей, которых вы читаете.

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







Больше контента на plainenglish.io