Реструктуризация Pyspark DataFrame - PullRequest
0 голосов
/ 31 марта 2019

Я решаю проблему регрессии.Для этого я сначала скопировал данные и применил регрессионную модель к каждому кластеру.Теперь я хочу реализовать другую модель регрессии, которая будет принимать прогнозируемые выходные данные каждого кластера как функцию и выводить агрегированное прогнозируемое значение.

Я уже реализовал модель кластеризации и регрессии в pyspark.Но я не могу окончательно извлечь выходные данные каждого кластера как функцию для ввода в другую регрессионную модель.

Как можно эффективно добиться этого преобразования в pyspark (предпочтительно) или pandas?

Текущий кадр данных:

date   cluster  predVal actual
31-03-2019 0     14      13
31-03-2019 1     24      15
31-03-2019 2     13      10
30-03-2019 0     14      13
30-03-2019 1     24      15
30-03-2019 2     13      10

Требуемый кадр данных

date       predVal0    predVal1   predVal2    actual
31-03-2019 14          24         13          38  // 13+15+10
30-03-2019 14          24         13          38  // 13+15+10

1 Ответ

2 голосов
/ 31 марта 2019

Вы хотите сделать pivot в pyspark, а затем создать новый столбец, суммируя столбцы predVal {i}. Вы должны продолжить в три этапа.

Первый шаг, вы хотите применить пивот. Ваш индекс - это дата, ваш столбец - это кластер, а столбец - значение, если predVal.

df_pivot = df.groupBy('date').pivot('cluster').agg(first('predVal'))

Затем вы должны применить сумму

df_actual = df.groupBy('date').sum('actual')

В конце вы можете объединить фактический столбец с сводными данными в данных столбца индекса:

df_final = df_pivot.join(df_actual ,['date']) 

Эта ссылка очень хорошо отвечает на ваш вопрос: - https://databricks.com/blog/2016/02/09/reshaping-data-with-pivot-in-apache-spark.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...