Diviser Pyspark Dataframe colonne par Colonne, en d'autres Pyspark Dataframe lors de l'ID Correspond à

J'ai un PySpark DataFrame, df1, qui ressemble à ceci:

CustomerID  CustomerValue
12          .17
14          .15
14          .25
17          .50
17          .01
17          .35

J'ai un deuxième PySpark DataFrame, df2, c'est-à df1 regroupées par code client et agrégées par la fonction somme. Il ressemble à ceci:

 CustomerID  CustomerValueSum
 12          .17
 14          .40
 17          .86

Je veux ajouter une troisième colonne à df1 qui est df1['CustomerValue'] divisé par df2['CustomerValueSum'] pour la même Customerid. Cela ressemblerait à:

CustomerID  CustomerValue  NormalizedCustomerValue
12          .17            1.00
14          .15            .38
14          .25            .62
17          .50            .58
17          .01            .01
17          .35            .41

En d'autres termes, je suis en train de convertir ce Python/Pandas code de 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]

Comment puis-je faire cela?

OriginalL'auteur TrentWoodbury | 2017-04-07