尝试联接表并获取"Resolved attribute(s) columnName#17 missing from ..."



我正试图连接两个表,却遇到了一系列令人沮丧的错误:

如果我尝试这个:

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')`**

最新更新