1
在Pandas DataFrame中,我可以使用DataFrame.isin()
函數將列值與另一列進行匹配。PySpark:將DataFrame列的值與另一個DataFrame列相匹配
例如: 假設我們有一個數據幀:
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
我可以使用.isin()
功能來匹配的df_A
列值df_B
列值
例如:
個df_B[df_B['col1'].isin(df_A['col1'])]
產量:
col1 col2
0 C 10
2 D 30
3 C 40
是什麼在PySpark數據幀等效操作?
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'
非常感謝@Mariusz,這很好地工作! – cwl
請將以上標記爲答案,如果它解決了您的相關問題@cwl。 – ZZzzZZzz