Lösung: spalten überschneiden sich, aber es ist kein suffix angegeben


Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:

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

Dieser Fehler tritt auf, wenn Sie versuchen, zwei Datenrahmen zu verbinden, die mindestens einen gemeinsamen Spaltennamen haben, und für den linken oder rechten Datenrahmen kein Suffix angegeben ist, um die Spalten im neuen Datenrahmen zu unterscheiden.

Es gibt zwei Möglichkeiten, diesen Fehler zu beheben:

Lösung 1: Geben Sie Suffixnamen an.

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

Lösung 2: Verwenden Sie stattdessen die Zusammenführungsfunktion.

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

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir versuchen, die folgenden zwei Datenrahmen zusammenzusetzen:

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

Wir erhalten eine Fehlermeldung, da die beiden Datenrahmen beide die Spalte „Spieler“ gemeinsam nutzen, für den linken oder rechten Datenrahmen jedoch kein Suffix angegeben ist, um die Spalten des neuen Datenrahmens zu unterscheiden.

So beheben Sie den Fehler

Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, einen Suffixnamen für den linken oder rechten Datenrahmen anzugeben:

 #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

Eine andere Möglichkeit, diesen Fehler zu beheben, besteht darin, einfach die Funktion merge() zu verwenden, bei der dieses Problem beim Zusammenfügen zweier Datenrahmen nicht auftritt:

 #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

Beachten Sie, dass die Funktion merge() einfach alle Namen aus dem zweiten Datenrahmen entfernt, die bereits zum ersten Datenrahmen gehören.

Zusätzliche Ressourcen

So führen Sie zwei Pandas DataFrames im Index zusammen
So führen Sie Pandas DataFrames über mehrere Spalten hinweg zusammen
So fügen Sie einem Pandas DataFrame ein Numpy-Array hinzu

Einen Kommentar hinzufügen

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