Я хочу нормализовать мой фрейм данных в pyspark по группам. Предложенное решение здесь не помогает, так как я хочу преобразовать каждый столбец в моем фрейме данных.
Код, который я использовал в python для pandas df, следующий:
df_norm = (X_df
.groupby('group')
.transform(lambda x: (x - x.min())/(x.max() - x.min()))
.fillna(0))
Как я могу сделать это в pyspark с помощью df или RDD?
Пример:
ввод:
columns = ['group', 'sensor1', 'sensor2', 'sensor3']
vals = [
(a, 0.8, 0.02, 100),
(a, 0.5, 0.1, 200),
(a, 1, 0.5, 50),
(a, 0, 0.8, 30)
(b, 10, 1, 0)
(b, 20, 2, 3)
(b, 5, 4, 1)
]
желаемый вывод:
columns = ['group','sensor1', 'sensor2', 'sensor3']
vals = [
(a, 0.8, 0, 0.4118),
(a, 0.5, 0.1026, 1),
(a, 1, 0.615, 0.11),
(a, 0, 1, 0)
(b, 0.333, 0, 0)
(b, 1, 0.333, 1)
(b, 0, 1, 0.333)
]