La suppression doubles colonnes après une DF rejoindre Spark

Lorsque vous vous joignez à deux DFs avec les mêmes noms de colonnes:

df = df1.join(df2, df1['id'] == df2['id'])

Rejoindre fonctionne très bien, mais vous ne pouvez pas appeler le id colonne, car il est ambigu et vous obtiendrez l'exception suivante:

pyspark.sql.utils.AnalysisException: "Reference 'id' is ambiguous, could be: id#5691, id#5918.;"

Ce fait id pas utilisable... plus

La fonction suivante permet de résoudre le problème:

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

Ce que je n'aime pas, c'est que je dois effectuer une itération sur les noms de colonnes et les supprimer pourquoi par un. Cela ressemble vraiment maladroit...

Connaissez-vous une autre solution qui va le rejoindre et supprimer les doublons de manière plus élégante ou supprimer plusieurs colonnes sans itération sur chacun d'eux?

marque la réponse sera aider les autres.

OriginalL'auteur thecheech | 2017-10-26