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