1 回答

TA貢獻1830條經(jīng)驗 獲得超9個贊
每當(dāng)你連接一個大的 DataFrame 和一個小的 DataFrame 時,你應(yīng)該總是嘗試執(zhí)行廣播連接。
如果df2小到可以廣播,那么df1.join(broadcast(df2))性能會更好。
該方法的第二個參數(shù)join()應(yīng)該是連接條件。
def approx_equal(col1, col2, threshold):
return abs(col1 - col2) < threshold
threshold = lit(0.01)
df4 = df1.join(broadcast(df2), approx_equal(df2.new_lat, df1.latitude, threshold) && approx_equal(df2.new_long, df1. longitude, threshold))
編輯:我將approx_equal函數(shù)添加到quinn,所以你的代碼可以更簡潔:
import quinn as Q
threshold = lit(0.01)
df4 = df1.join(broadcast(df2), Q.approx_equal(df2.new_lat, df1.latitude, threshold) && Q.approx_equal(df2.new_long, df1. longitude, threshold))
添加回答
舉報