我正试图连接两个表,却遇到了一系列令人沮丧的错误:
如果我尝试这个:
pop_table = mtrips.join(trips, (mtrips["DOLocationID"] == trips["PULocationID"]))
然后我得到这个错误:
Resolved attribute(s) PULocationID#17 missing from PULocationID#2508,
如果我尝试这个:
pop_table = mtrips.join(trips, (col("DOLocationID") == col("PULocationID")))
我得到这个错误:
"Reference 'DOLocationID' is ambiguous, could be: DOLocationID, DOLocationID.;"
如果我尝试这个:
pop_table = mtrips.join(trips, col("mtrips.DOLocationID") == col("trips.PULocationID"))
我得到这个错误:
"cannot resolve '`mtrips.DOLocationID`' given input columns: [DOLocationID]
当我在SO上搜索这些错误时,似乎每个帖子都在告诉我尝试一些我已经尝试过但不起作用的东西。
我不知道从这里到哪里去。感谢帮助!
看起来像是这个问题。这些名字有些含糊。
您是从另一个数据帧派生其中一个数据框架吗?在这种情况下,在执行联接操作之前,请使用withColumnRenamed()
重命名第二个数据帧中的"联接"列。
这是两个数据帧中列名问题的有力证据。
1.当您在两个数据帧中都有不同的列时,预计联接键列在两个DF中的名称相同,请使用此
**`df = df.join(df_right, 'join_col_which_is_same_in_both_df', 'left')`**
2.当您的联接列在两个数据帧中的名称不同时-此联接将同时采用列,即联接的df中的col1和col2
**`df = df.join(df_right, df.col1 == df_right.col2, 'left')`**