2
我有这两个dataframes:Pyspark:从不同的表乘以列
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'))
我需要做的是创建另一个数据帧,其模式将
人,狗,score_person * score_dog
所以基本上乘以两个数据帧中的列score
并保留两个第一列。这种乘法必须针对每个可能的几个因素进行,即每个人与每只狗,以便我的结果数据框将有15行。
我找不到方法来获得这个,在我看来,它必须通过两个数据框上的SELECT,但没有JOIN和UNION可以帮助。
看起来宏大,任何理由,我得到这样的事情,虽然:行(人= U” u1',dog = u'd2',product = None)(无)?结果中有几个,其他一些是0.它是类型的问题吗? –
是的。 'type(0)'(我纠正的部分)是'int',而'type(0.5)'是'float'。 Spark'DataFrame'只能包含单个类型(第一个值用于确定模式),所有其他值将被丢弃。你可以在'join'之前检查它。 – zero323