通过乘以 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"
]
)
所以,我在这里遇到了一个关于 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"
]
)