Транспонировать столбцы и создать словари как значения в другом столбце ⇐ 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) Я не могу каким-то образом получить результат.
У меня есть фрейм данных 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) Я не могу каким-то образом получить результат.
Мобильная версия