Spark Dataframes работает немного иначе, чем фрейм данных Pandas после преобразования ваших фреймов данных Pandas в фреймы данных Spark
Я обновляю имя freq
до zeq
только для демонстрацииСортировка
df = spark.createDataFrame([(4,1,100),(8,1,200),(8,3,300),(20,4,250),(16,5,400)], ['zeq','kod','lsv'])
sorted_df = df.select(sorted(df.columns))
sorted_df.show()
+---+---+---+
|kod|lsv|zeq|
+---+---+---+
| 1|100| 4|
| 1|200| 8|
| 3|300| 8|
| 4|250| 20|
| 5|400| 16|
+---+---+---+
заголовок dataFrame
headers = spark.createDataFrame([('code','kod'),('visits','zeq'),('volume','lsv')],['newid','oldid'])
headers.show()
+------+-----+
| newid|oldid|
+------+-----+
| code| kod|
|visits| zeq|
|volume| lsv|
+------+-----+
есть метод с именем toDF
, доступный в кадре данных Spark, который принимает список новых столбцов заголовка в качестве аргументаи обновляет заголовок фрейма данных.
, поэтому сортируйте ваш фрейм данных на основе oldid, выбирайте новый идентификатор и конвертируйте значения этого столбца в список, как показано ниже
sorted_headers_list = headers.sort('oldid').select('newid').rdd.flatMap(lambda x: x).collect()
обновить ваш фрейм данных с новыми заголовками
df_with_updated_headers = sorted_df.toDF(*sorted_headers_list)
df_with_updated_headers.show()
+----+------+------+
|code|volume|visits|
+----+------+------+
| 1| 100| 4|
| 1| 200| 8|
| 3| 300| 8|
| 4| 250| 20|
| 5| 400| 16|
+----+------+------+
пожалуйста, дайте мне знать, если вам нужно больше деталей