我有一个关于 PySpark 中 join 的两种语法差异的问题,
例如,我有这两个数据框
DF1
身份证 | 姓名 |
---|---|
1 | 奥利弗 |
2 | 迈克尔 |
3 | 贾斯汀 |
DF2
身份证 | 地址 |
---|---|
1 | 巴西 |
1 | 法国 |
2 | 葡萄牙 |
2 | 阿根廷 |
3 | 墨西哥 |
我通常使用:
df1.join(df2, (col('df1.ID') == col('df2.ID')), 'left')
但有时我看到人们使用:
df1.join(df2, 'ID', 'left')
那么,我的问题是,这两个代码有什么区别?
我试图理解连接的第一个和第二个语法之间的区别。
如果您要加入两个数据框中具有相同名称的列,则使用第二个选项会更清晰。 如果您要加入具有不同名称的列,则可以使用第一个选项。例如,如果在 df1 中,ID 列被命名为 USER_ID,并且您不希望重命名该列,则应加入为:
df1.join(df2, (col('df1.USER_ID') == col('df2.ID')), 'left')
或
df1.join(df2, df1.USER_ID == df2.ID, 'left')