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