Problembehebung: columns overlap but no suffix specified

Von Fabian
Kategorie: Python
Lesezeit: 3 Minuten

Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:

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

Dieser Fehler tritt auf, wenn Sie versuchen, zwei Dataframes zusammenzufügen, die mindestens einen gemeinsamen Spaltennamen aufweisen, und weder für den linken noch für den rechten Dataframe ein Suffix bereitgestellt wird, um zwischen den Spalten im neuen Dataframe 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 Merge-Funktion.

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 Dataframe zusammenzufügen:

import pandas as pd

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

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

#versuchen Sie, eine Linksverknüpfung der Dataframes auszuführen
df1.join(df2, how = 'left')

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

Wir erhalten einen Fehler, da die beiden Dataframes beide die Spalte „Spieler“ teilen, aber weder für das linke noch für das rechte Dataframe ein Suffix bereitgestellt wird, um zwischen den Spalten im neuen Dataframe zu unterscheiden.

So beheben Sie den Fehler

Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, einen Suffixnamen für das linke oder rechte Dataframe anzugeben:

# Linksverknüpfung der Dataframes mit bereitgestelltem Suffix durchführen
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 nicht auftritt, wenn zwei Dataframe miteinander verbunden werden:

#Zwei Dataframe zusammenführen
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 Dataframe löscht, die bereits zum ersten Dataframe gehören.

Zusätzliche Ressourcen

So führen Sie zwei Pandas-DataFrames auf Index zusammen
So führen Sie Pandas DataFrames in mehreren Spalten zusammen
So fügen Sie einem Pandas DataFrame ein Numpy-Array hinzu

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: