通过乘以 Pyspark 上其他 2 个数据框的列来创建数据框

Creating a dataframe by multiplying the columns of other 2 dataframes on Pyspark

所以,我在这里遇到了一个关于 pyspark 的棘手任务。我需要用下面两个数据框中的数据创建一个新的数据框。第一个叫做app_daily_users:

DATE APP_1 APP_2 APP_3 APP_4 APP_5
2020-01-01 105190 1000 100140 230380 167456
2020-01-02 91170 5000 102103 228988 171698
2020-01-03 79110 4000 412130 215554 214412
2020-01-04 130859 4000 61660 331125 335510

第二个叫correction:

DATE CORRECTION_INDEX
2020-01-01 0.458
2020-01-02 0.589
2020-01-03 0.988
2020-01-04 0.477

我需要将“app daily users”上的每一列乘以“correction”数据框上的校正索引。 所以最后我会有这样的东西(只是一个简单的例子):

DATE APP_1 APP_2 APP_3 APP_4 APP_5
2020-01-01 48.180 458 45864 105514 76694

上面各列的值是 2020 年 1 月 1 日第一个数据帧上的值0.458,其中是当天的修正指数。你们能帮我解决这个问题吗?

谢谢!

只需加入 DATE,然后使用带有 select 表达式的列表理解来应用乘法:

from pyspark.sql import functions as F

result = app_daily_users.join(correction, ["DATE"], "left").select(
    "DATE",
    *[(F.col(c) * F.col("CORRECTION_INDEX")).alias(c)
      for c in app_daily_users.columns if c != "DATE"
      ]
)