Więc co wiem w Spark Dataframe, że dla wielu kolumn mogą mieć taką samą nazwę jak pokazano poniżej dataframe migawka:Spark Dataframe odróżnić kolumny z powtórzoną nazwą
[
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}))
]
Powyższy wynik jest tworzony przez przyłączyć z dataframe do siebie, widać, że są kolumny 4
z dwoma a
i f
.
Problemem jest to że gdy próbuję wykonać więcej obliczeń z kolumną a
, nie mogę znaleźć sposób, aby wybrać a
, muszę spróbować df[0]
i df.select('a')
, zarówno zwrócone mnie poniżej błędu mesaage:
AnalysisException: Reference 'a' is ambiguous, could be: a#1333L, a#1335L.
Czy mimo to w interfejsie API Sparka mogę ponownie odróżnić kolumny od powtórzonych nazw? a może jakiś sposób na zmianę nazw kolumn?
Dzięki, Twoja odpowiedź jest bardzo prostym rozwiązaniem mojego pytania! – resec
Być może będziesz musiał poprawić swoją odpowiedź, ponieważ cytaty nie są poprawnie poprawiane między nazwami kolumn. –
@SamehSharaf Zakładam, że odpowiadasz moją odpowiedzią? Ale odpowiedź jest w 100% poprawna - po prostu używam scala '' '-shorthand do selekcji kolumn, więc w rzeczywistości nie ma problemu z cytatami. –