Come risolvere il problema: le colonne si sovrappongono ma non è specificato alcun suffisso


Un errore che potresti riscontrare quando usi i panda è:

 ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')

Questo errore si verifica quando si tenta di unire due frame di dati che condividono almeno un nome di colonna comune e non viene fornito alcun suffisso per il frame di dati sinistro o destro per distinguere le colonne nel nuovo frame di dati.

Esistono due modi per correggere questo errore:

Soluzione 1: fornire i nomi dei suffissi.

 df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')

Soluzione 2: utilizzare invece la funzione di unione.

 df1. merge (df2, how = ' left ')

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di provare a mettere insieme i due frame di dati seguenti:

 import pandas as pd

#create first data frame
df1 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' points ': [5, 7, 7, 9, 12, 9],
                    ' assists ': [11, 8, 10, 6, 6, 5]})

#create second data frame
df2 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' rebounds ': [4, 4, 6, 9, 13, 16],
                    ' steals ': [2, 2, 1, 4, 3, 2]})

#attempt to perform left join on data frames
df1. join (df2, how = ' left ')

ValueError : columns overlap but no suffix specified: Index(['player'], dtype='object')

Riceviamo un errore perché i due frame di dati condividono entrambi la colonna “player”, ma non viene fornito alcun suffisso per il frame di dati sinistro o destro per distinguere le colonne del nuovo frame di dati.

Come correggere l’errore

Un modo per correggere questo errore è fornire un nome suffisso per il frame di dati sinistro o destro:

 #perform left join on data frames with suffix provided
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')

        playerleft points assists playerright rebounds steals
0 A 5 11 A 4 2
1 B 7 8 B 4 2
2 C 7 10 C 6 1
3 D 9 6 D 9 4
4 E 12 6 E 13 3
5 F 9 5 F 16 2

Un altro modo per correggere questo errore è utilizzare semplicemente la funzione merge() , che non riscontra questo problema quando si uniscono due frame di dati:

 #merge two data frames
df1. merge (df2, how = ' left ')

	player points assists rebounds steals
0 A 5 11 4 2
1 B 7 8 4 2
2 C 7 10 6 1
3 D 9 6 9 4
4 E 12 6 13 3
5 F 9 5 16 2

Si noti che la funzione merge() rimuove semplicemente tutti i nomi dal secondo frame di dati che già appartengono al primo frame di dati.

Risorse addizionali

Come unire due DataFrames Panda su index
Come unire Pandas DataFrames su più colonne
Come aggiungere un array Numpy a un DataFrame Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *