Умножьте два фрейма данных Pyspark - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть PySpark DataFrame, df1, который выглядит следующим образом:

CustomerID  CustomerValue CustomerValue2 
15          10            2
16          10            3
18          3             3

У меня есть второй PySpark DataFrame, df2

 CustomerID  CustomerValue 
 15          2          
 16          3           
 18          4        

Я хочу умножить все столбцы df1(У меня более двух столбцов) со значением df2 join на ID клиента.Поэтому я хочу что-то подобное

 CustomerID     CosineCustVal CosineCustVal
 15             20            4
 16             30            9
 18             12            9

1 Ответ

0 голосов
/ 28 сентября 2018

Как только вы присоединитесь к ним, вы можете запустить цикл for для столбцов df1:

from pyspark.sql import functions as F

df_joined = df1.join(df2, df1.CustomerID == df2.CustomerID)
for col_name in df_joined.columns:
    if col_name != 'CustomerValue':
        df_joined = df_joined.withColumn(col_name, F.column(col_name) * F.column('CustomerValue'))

На основе этой статьи , spark создаст умный план, даже если дляЦикл подсказывает иначе (помните, что spark запускает вычисления только после вызова action, пока вы просто не назначите transformations: https://spark.apache.org/docs/latest/rdd-programming-guide.html#transformations).

...