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