2016-10-18 3 views
0

パンダで、私は正常に次のように実行することができますスパークデータフレーム-Pythonは

def car(t) 
    if t in df_a: 
     return df_a[t]/df_b[t] 
    else: 
     return 0 

をしかし、私は、スパークデータフレームとまったく同じことを行うことができますどのように多くの感謝を!
データは0.25である必要があり、この

df_a 
a 20 
b 40 
c 60 

df_b 
a 80 
b 50 
e 100 

結果のようなものであるとき、入力車(A)

+0

あなたは何を計算しようとしていますか? –

+0

私はhadoopを使用していますが、パンダのコードを –

+0

に変換したいのですが、その機能は何ですか、入力と出力を表示する必要があります。 –

答えて

3

まず、join両方のデータフレームに、そしてあなたが望む手紙とselectによってfilterに持っていあなたが必要とする操作。

df_a = sc.parallelize([("a", 20), ("b", 40), ("c", 60)]).toDF(["key", "value"]) 
df_b = sc.parallelize([("a", 80), ("b", 50), ("e", 100)]).toDF(["key", "value"]) 

def car(c): 
    return df_a.join(df_b, on=["key"]).where(df_a["key"] == c).select((df_a["value"]/df_b["value"]).alias("ratio")).head() 

car("a") 

# Row(ratio=0.25) 
+0

それは動作します。ありがとう! –

+0

もう1つ質問がありますが、入力はデータフレームですか?私はキーをconatinするデータフレームdf_cを入力し、car()はdf_cのキーの各行をループし、出力は各キーの比率になります。 –

+0

最初に私に例を示す必要があります。しかし、そのような命令的な方法で考えるのを避け、スパークは怠惰であり、計算の大部分は並行して行われる –

関連する問題