【发布时间】:2018-04-07 06:08:42
【问题描述】:
当您加入两个列名相似的 DF 时:
df = df1.join(df2, df1['id'] == df2['id'])
加入工作正常,但您不能调用 id 列,因为它不明确,您会收到以下异常:
pyspark.sql.utils.AnalysisException:“参考‘id’不明确, 可能是:id#5691, id#5918.;"
这使得id 不再可用...
下面的函数解决了这个问题:
def join(df1, df2, cond, how='left'):
df = df1.join(df2, cond, how=how)
repeated_columns = [c for c in df1.columns if c in df2.columns]
for col in repeated_columns:
df = df.drop(df2[col])
return df
我不喜欢的是我必须遍历列名并将它们删除为什么。这看起来真的很笨重...
您是否知道任何其他解决方案可以更优雅地加入和删除重复项或删除多个列而不迭代每个列?
【问题讨论】:
-
标记答案会帮助别人。
标签: python apache-spark pyspark apache-spark-sql