Я пришел из пандского фона и привык читать данные из CSV-файлов в информационном кадре, а затем просто менять имена столбцов на что-то полезное с помощью простой команды:
df.columns = new_column_name_list
Однако то же самое не работает в фреймах данных pyspark, созданных с использованием sqlContext. Единственное решение, которое я мог найти, чтобы сделать это легко, заключается в следующем:
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt")
oldSchema = df.schema
for i,k in enumerate(oldSchema.fields):
k.name = new_column_name_list[i]
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema)
Это в основном определяет переменную дважды и сначала выводит схему, затем переименовывает имена столбцов, а затем снова загружает фрейм данных с обновленной схемой.
Есть ли лучший и более эффективный способ сделать это, как мы делаем в пандах?
Моя искровая версия 1.5.0
источник
for
петлей +withColumnRenamed
, но вашreduce
вариант очень хорош :)from functools import reduce
Преимущество использования этого способа: с длинным списком столбцов вы хотели бы изменить только несколько имен столбцов. Это может быть очень удобно в этих сценариях. Очень полезно при объединении таблиц с повторяющимися именами столбцов.
источник
Если вы хотите изменить имена всех столбцов, попробуйте
df.toDF(*cols)
источник
df = df.toDF(*my_pandas_df.columns)
cols
новые имена столбцов и просто предполагая порядок имен вcols
соответствии с порядком столбцов в кадре данных?В случае, если вы хотите применить простое преобразование ко всем именам столбцов, этот код делает свое дело: (я заменяю все пробелы подчеркиванием)
Спасибо @ user8117731 за
toDf
трюк.источник
Если вы хотите переименовать один столбец и оставить все как есть:
источник
df.withColumnRenamed('age', 'age2')
источник
withColumnRenamed
.это подход, который я использовал:
создать сеанс pyspark:
создать фрейм данных:
просмотреть df с именами столбцов:
создать список с новыми именами столбцов:
измените имена столбцов df:
просмотреть df с новыми именами столбцов:
источник
Я сделал простую в использовании функцию для переименования нескольких столбцов для фрейма данных pyspark, на случай, если кто-то захочет использовать его:
источник
old_columns
что будет так же, какdf.columns
.Другой способ переименовать только один столбец (используя
import pyspark.sql.functions as F
):источник
Я использую это:
источник
Вы можете использовать следующую функцию, чтобы переименовать все столбцы вашего фрейма данных.
Если вам нужно обновить только имена нескольких столбцов, вы можете использовать то же имя столбца в списке replace_with
Переименовать все столбцы
Переименовать несколько столбцов
источник
Для переименования одного столбца вы все равно можете использовать toDF (). Например,
источник
Мы можем использовать различные подходы, чтобы переименовать имя столбца.
Сначала давайте создадим простой DataFrame.
Теперь давайте попробуем переименовать col_1 в col_3. PFB несколько подходов, чтобы сделать то же самое.
Вот вывод.
Надеюсь, это поможет.
источник