Oplossing: kolommen overlappen elkaar, maar er is geen achtervoegsel opgegeven


Een fout die u kunt tegenkomen bij het gebruik van panda’s is:

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

Deze fout treedt op wanneer u probeert twee dataframes samen te voegen die ten minste één gemeenschappelijke kolomnaam delen en er geen achtervoegsel is opgegeven voor het linker- of rechterdataframe om de kolommen in het nieuwe dataframe te onderscheiden.

Er zijn twee manieren om deze fout op te lossen:

Oplossing 1: geef achtervoegsels op.

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

Oplossing 2: gebruik in plaats daarvan de samenvoegfunctie.

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

Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.

Hoe de fout te reproduceren

Stel dat we proberen de volgende twee dataframes samen te voegen:

 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')

We ontvangen een foutmelding omdat de twee dataframes beide de kolom „speler“ delen, maar er is geen achtervoegsel voorzien voor het linker- of rechterdataframe om de kolommen van het nieuwe dataframe te onderscheiden.

Hoe u de fout kunt oplossen

Eén manier om deze fout op te lossen is door een achtervoegselnaam op te geven voor het linker- of rechterdataframe:

 #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

Een andere manier om deze fout op te lossen is door eenvoudigweg de functie merge() te gebruiken, die dit probleem niet ondervindt bij het samenvoegen van twee dataframes:

 #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

Merk op dat de functie merge() eenvoudigweg alle namen uit het tweede dataframe verwijdert die al tot het eerste dataframe behoren.

Aanvullende bronnen

Hoe twee Pandas DataFrames op index samen te voegen
Hoe Pandas DataFrames over meerdere kolommen samen te voegen
Hoe u een Numpy-array aan een Pandas DataFrame toevoegt

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert