【发布时间】:2017-04-07 21:38:31
【问题描述】:
我有一个 PySpark 数据帧 df1,它看起来像:
CustomerID CustomerValue
12 .17
14 .15
14 .25
17 .50
17 .01
17 .35
我有第二个 PySpark 数据帧 df2,它是按 CustomerID 分组并由 sum 函数聚合的 df1。它看起来像这样:
CustomerID CustomerValueSum
12 .17
14 .40
17 .86
我想向 df1 添加第三列,即 df1['CustomerValue'] 除以 df2['CustomerValueSum'] 以获得相同的 CustomerID。这看起来像:
CustomerID CustomerValue NormalizedCustomerValue
12 .17 1.00
14 .15 .38
14 .25 .62
17 .50 .58
17 .01 .01
17 .35 .41
换句话说,我正在尝试将此 Python/Pandas 代码转换为 PySpark:
normalized_list = []
for idx, row in df1.iterrows():
(
normalized_list
.append(
row.CustomerValue / df2[df2.CustomerID == row.CustomerID].CustomerValueSum
)
)
df1['NormalizedCustomerValue'] = [val.values[0] for val in normalized_list]
我该怎么做?
【问题讨论】:
标签: python pyspark spark-dataframe