2017-03-02 20 views
1

Pandas DataFrameでは、DataFrame.isin()関数を使用して、列の値を別の列と照合することができます。例えばPySpark:DataFrame列の値と別のDataFrame列を一致させる

: は、我々は1つのデータフレームを持っているとします

df_A = pd.DataFrame({'col1': ['A', 'B', 'C', 'B', 'C', 'D'], 
        'col2': [1, 2, 3, 4, 5, 6]}) 
df_A 

    col1 col2 
0 A  1 
1 B  2 
2 C  3 
3 B  4 
4 C  5 
5 D  6   

と別のデータフレーム:

df_B = pd.DataFrame({'col1': ['C', 'E', 'D', 'C', 'F', 'G', 'H'], 
        'col2': [10, 20, 30, 40, 50, 60, 70]}) 
df_B 

    col1 col2 
0 C 10 
1 E 20 
2 D 30 
3 C 40 
4 F 50 
5 G 60 
6 H 70  

私はdf_Aの列の値に対してdf_Bの列の値に一致するように.isin()機能を使用することができます

例:

df_B[df_B['col1'].isin(df_A['col1'])] 

利回り:

col1 col2 
0 C 10 
2 D 30 
3 C 40 

PySpark DATAFRAMEで同等の操作は何ですか?

df_A = pd.DataFrame({'col1': ['A', 'B', 'C', 'B', 'C', 'D'], 
        'col2': [1, 2, 3, 4, 5, 6]}) 
df_A = sqlContext.createDataFrame(df_A) 

df_B = pd.DataFrame({'col1': ['C', 'E', 'D', 'C', 'F', 'G', 'H'], 
        'col2': [10, 20, 30, 40, 50, 60, 70]}) 
df_B = sqlContext.createDataFrame(df_B) 


df_B[df_B['col1'].isin(df_A['col1'])] 

.isin()上記のコードは私にエラーメッセージを与える:

このような操作が呼び出され
u'resolved attribute(s) col1#9007 missing from 
col1#9012,col2#9013L in operator !Filter col1#9012 IN 
(col1#9007);;\n!Filter col1#9012 IN (col1#9007)\n+- 
LogicalRDD [col1#9012, col2#9013L]\n' 

答えて

2

左半はスパークに参加:

df_B.join(df_A, ['col1'], 'leftsemi') 
+1

おかげでたくさん@Mariusz、これをうまく動作します! – cwl

+0

あなたの仲間@cwlを解決した場合は上記のように答えてください。 – ZZzzZZzz

関連する問題