Транспонировать столбцы и создать словари как значения в другом столбцеPython

Программы на Python
Ответить
Гость
 Транспонировать столбцы и создать словари как значения в другом столбце

Сообщение Гость »


У меня есть фрейм данных Spark. Я пытаюсь преобразовать столбцы в строки и сделать один из столбцов gw ключом словаря в другом столбце.

+-----+-----+-----+-------+ | гв |rrc |re_est| +-----+-------------------+ | 210.142.27.137 | 1400,0| 26,0 | | 210.142.27.202| 2300| 12 | ожидаемый результат:

+-----+-----------+- | индекс |gw_mapping| +-----+------ | ррк | {210.142.27.137:1400.0, 210.142.27.202: 2300}| | ре_ест | {10.142.27.137:26.0, 210.142.27.202:12 }| Что я сделал:

из pyspark.sql import SparkSession из pyspark.sql.functions importcollect_list, concat_ws,lit,map_from_arrays,expr # Создаём SparkSession искра = SparkSession.builder.appName("DataFramePivot").getOrCreate() # Ваш первоначальный DataFrame данные = [("210.142.27.137", 1400.0, 26.0), ("210.142.27.202", 2300, 12)] columns = ["gw", "rrc", "re_est"] df = spark.createDataFrame(данные, столбцы) # Поверните DataFrame и отформатируйте вывод Pivot_df = df.groupBy().agg( map_from_arrays(collect_list(lit("gw")),collect_list("rrc")).alias("rrc"), map_from_arrays(collect_list(lit("gw")),collect_list("re_est")).alias("re_est") ) # Создайте массив с ключами «rrc» и «re_est». keys_array =lit(["rrc", "re_est"]) # Объедините карты 'rrc' и 're_est' в одну карту комбинированная_карта = map_from_arrays(keys_array, array(pivot_df['rrc'], Pivot_df['re_est'])) # Разбить объединенную карту на отдельные строки result_df = комбинированная_карта.selectExpr("взорвать(карта) как (индекс, gw_mapping)") # Показать результат с нужным форматированием result_df.show(truncate=False) Я не могу каким-то образом получить результат.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»