【发布时间】:2019-01-09 14:33:01
【问题描述】:
我想按组对 pyspark 中的数据框进行标准化。 here 提出的解决方案没有帮助,因为我想转换数据框中的每一列。 我在 pandas df 上的 python 中使用的代码如下:
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)
]
【问题讨论】:
-
您愿意使用
MinMaxScaler吗? -
是的!你能把它和窗口函数结合起来吗?
-
您能否提供一个reproducible example,其中包含小样本数据和所需的输出?
-
完成 :) 我只想按组对我的 df 中的每一列进行最小最大转换
标签: python pyspark apache-spark-mllib normalize