gpt4 book ai didi

python - Pyspark:将不同表中的列相乘

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:23 49 4
gpt4 key购买 nike

我有这两个数据框:

df1 = sc.parallelize([
['u1', 0.5],
['u2', 0.2],
['u3', 0.1],
['u4', 0.9],
['u5', 0.7]
]).toDF(('person', 'score'))

df2 = sc.parallelize([
['d1', 0.0],
['d2', 0.5],
['d3', 0.7],
]).toDF(('dog', 'score'))

我需要做的是创建另一个数据框,其架构为

person, dog, score_person * score_dog

所以基本上将两个数据框中的列 score 相乘并保留前两列。这种乘法必须对每个可能的因素对进行,即每个人和每只狗,这样我的结果数据框就会有 15 行。

我找不到获得此信息的方法,在我看来,它必须在两个数据帧上都通过 SELECT,但 JOIN 或 UNION 都无济于事。

最佳答案

通常笛卡尔积是您想要避免的东西,但在这里您只需要简单的 join 而不需要 on 参数:

df1.join(df2).select("person", "dog", (df1.score * df2.score).alias("product"))

关于python - Pyspark:将不同表中的列相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36104292/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com