수정방법: 열이 겹치는데 접미사가 지정되지 않음
pandas를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.
ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')
이 오류는 하나 이상의 공통 열 이름을 공유하는 두 개의 데이터 프레임을 조인하려고 할 때 발생하며 새 데이터 프레임의 열을 구별하기 위해 왼쪽 또는 오른쪽 데이터 프레임에 접미사가 제공되지 않습니다.
이 오류를 해결하는 방법에는 두 가지가 있습니다.
해결 방법 1: 접미사 이름을 제공합니다.
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')
해결 방법 2: 대신 병합 기능을 사용하세요.
df1. merge (df2, how = ' left ')
다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.
오류를 재현하는 방법
다음 두 데이터 프레임을 하나로 합치려고 한다고 가정해 보겠습니다.
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')
두 데이터 프레임이 모두 “플레이어” 열을 공유하기 때문에 오류가 발생하지만 새 데이터 프레임의 열을 구별하기 위해 왼쪽 또는 오른쪽 데이터 프레임에 접미사가 제공되지 않습니다.
오류를 수정하는 방법
이 오류를 해결하는 한 가지 방법은 왼쪽 또는 오른쪽 데이터 프레임에 접미사 이름을 제공하는 것입니다.
#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
이 오류를 해결하는 또 다른 방법은 두 데이터 프레임을 결합할 때 이 문제가 발생하지 않는 merge() 함수를 사용하는 것입니다.
#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
merge() 함수는 단순히 첫 번째 데이터 프레임에 이미 속한 두 번째 데이터 프레임의 모든 이름을 제거한다는 점에 유의하세요.
추가 리소스
인덱스에 두 개의 Pandas DataFrame을 병합하는 방법
여러 열에 걸쳐 Pandas DataFrame을 병합하는 방법
Pandas DataFrame에 Numpy 배열을 추가하는 방법