Когда вы присоединяетесь к двум DF с похожими именами столбцов:
df = df1.join(df2, df1['id'] == df2['id'])
Соединение работает нормально, но вы не можете вызвать столбец id
, потому что он неоднозначен, и вы получите следующее исключение:
pyspark.sql.utils.AnalysisException: "Reference 'id' is ambiguous, could be: 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
Что мне не нравится в этом, так это то, что я должен перебирать имена столбцов и удалять их почему-то одним. Это выглядит действительно неуклюжим...
Знаете ли вы о каком-либо другом решении, которое будет более элегантно или удалять дубликаты, или удалять несколько столбцов без повторения каждого из них?