查询使用:
df= (df1.alias('a')
.join(df2, a.id == df2.id, how='inner')
.select('a.*').alias('b')
.join(df3, b.id == df3.id, how='inner'))
错误:未定义名称'b'。
答案 0 :(得分:1)
.alias('b')
不会创建名为b
的Python标识符。它设置返回的数据帧的内部名称。您的a.id
可能也不是您所期望的事物,但它是先前定义的事物。
我不记得一种在表达式中按名称访问新创建的DF的好方法。我会使用一个中间标识符:
df_joined = df1.join(df1.id == df2.id, how='inner')
result_df = dj_joined.join(df_joined.id == df3.id, how='inner')