Jak naprawić: kolumny nakładają się, ale nie określono żadnego sufiksu


Błąd, który możesz napotkać podczas korzystania z pand, to:

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

Ten błąd występuje, gdy próbujesz połączyć dwie ramki danych, które mają co najmniej jedną wspólną nazwę kolumny, a dla lewej i prawej ramki danych nie podano sufiksu umożliwiającego rozróżnienie kolumn w nowej ramce danych.

Istnieją dwa sposoby naprawienia tego błędu:

Rozwiązanie 1: Podaj nazwy przyrostków.

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

Rozwiązanie 2: Zamiast tego użyj funkcji scalania.

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

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że próbujemy połączyć następujące dwie ramki danych:

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

Otrzymujemy błąd, ponieważ obie ramki danych współdzielą kolumnę „odtwarzacz”, ale dla lewej i prawej ramki danych nie podano przyrostka umożliwiającego rozróżnienie kolumn nowej ramki danych.

Jak naprawić błąd

Jednym ze sposobów naprawienia tego błędu jest podanie nazwy przyrostka dla lewej lub prawej ramki danych:

 #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

Innym sposobem naprawienia tego błędu jest po prostu użycie funkcji merge() , która nie napotyka tego problemu podczas łączenia dwóch ramek danych:

 #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

Należy zauważyć, że funkcja merge() po prostu usuwa z drugiej ramki danych wszystkie nazwy, które już należą do pierwszej ramki danych.

Dodatkowe zasoby

Jak połączyć dwie ramki danych Pandas w pliku Index
Jak połączyć ramki danych Pandas w wielu kolumnach
Jak dodać tablicę Numpy do ramki danych Pandas

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *