gpt4 book ai didi

python - PySpark:将 DataFrame 列的值与另一个 DataFrame 列进行匹配

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:42 26 4
gpt4 key购买 nike

在 Pandas DataFrame 中,我可以使用 DataFrame.isin() 函数将列值与另一列进行匹配。

例如:假设我们有一个 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

和另一个 DataFrame:

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_B 的列值与 df_A 的列值进行匹配

例如:

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'

最佳答案

这种操作在spark中称为left semi join:

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

关于python - PySpark:将 DataFrame 列的值与另一个 DataFrame 列进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com