Così come ho di comunicare in Spark dataframe, che per più colonne possono avere lo stesso nome, come mostrato in seguito dataframe snapshot:Spark dataframe distinguere le colonne con il nome duplicato
[
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=125231, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0047, 3: 0.0, 4: 0.0043})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=145831, f=SparseVector(5, {0: 0.0, 1: 0.2356, 2: 0.0036, 3: 0.0, 4: 0.4132})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=147031, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=149231, f=SparseVector(5, {0: 0.0, 1: 0.0032, 2: 0.2451, 3: 0.0, 4: 0.0042}))
]
Sopra risultato è stato creato da unire con un dataframe a sé stesso, puoi vedere che ci sono 4
colonne con entrambi i due a
e f
.
Il problema è c'è quando provo a fare di più di calcolo con la colonna a
, non posso trovare un modo per selezionare il a
, ho cercare df[0]
e df.select('a')
, entrambi mi ha restituito sotto l'errore mesaage:
AnalysisException: Reference 'a' is ambiguous, could be: a#1333L, a#1335L.
C'è comunque nell'API Spark che posso distinguere nuovamente le colonne dai nomi duplicati? o forse un modo per farmi cambiare i nomi delle colonne?
Grazie, la risposta è una soluzione molto semplice alla mia domanda! – resec
Potrebbe essere necessario correggere la risposta poiché le virgolette non sono regolate correttamente tra i nomi delle colonne. –
@SamehSharaf Suppongo che tu sia l'unico a votare la mia risposta? Ma la risposta è in realtà corretta al 100% - sto semplicemente usando lo scala '' -shorthand per la selezione delle colonne, quindi non c'è alcun problema con le virgolette. –