본문 바로가기
Python/Pandas

pandas dataframe ValueError (duplicate label) 오류 해결하기

by PySun 2023. 10. 3.
반응형

판다스(DataFrame)를 사용할 때 ValueError (duplicate label) 에러가 발생하는 상황과 이를 해결하는 여러 가지 방법에 대해 예시 코드와 함께 설명하겠습니다.

상황 1: 중복된 열 이름을 가진 데이터프레임 병합

import pandas as pd

# 중복된 열 이름을 가진 두 개의 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

# 데이터프레임 병합 시 중복된 열 이름이 발생
result = pd.concat([df1, df2], axis=1)

이 경우, 두 개의 데이터프레임을 병합하면 열 이름 'A'와 'B'가 중복되므로 ValueError (duplicate label) 에러가 발생합니다.

해결 방법 1: 열 이름 변경

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

# 열 이름을 변경하여 병합
df1.columns = ['A1', 'B1']
df2.columns = ['A2', 'B2']

result = pd.concat([df1, df2], axis=1)

해결 방법 2: 중복 열 제거

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

# 중복된 열을 제거하고 병합
result = pd.concat([df1, df2], axis=1, ignore_index=True)

상황 2: 중복된 인덱스를 가진 데이터프레임 병합

import pandas as pd

# 중복된 인덱스를 가진 두 개의 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3]}, index=[1, 2, 3])
df2 = pd.DataFrame({'B': [4, 5, 6]}, index=[2, 3, 4])

# 데이터프레임 병합 시 중복된 인덱스가 발생
result = pd.concat([df1, df2], axis=1)

이 경우, 두 개의 데이터프레임을 병합하면 중복된 인덱스(2와 3)가 발생하여 ValueError (duplicate label) 에러가 발생합니다.

해결 방법: 중복된 인덱스 처리

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3]}, index=[1, 2, 3])
df2 = pd.DataFrame({'B': [4, 5, 6]}, index=[2, 3, 4])

# 중복된 인덱스를 해결하고 병합
result = pd.concat([df1, df2], axis=1, join='outer')  # 중복 인덱스를 모두 포함하는 방법
# 또는
result = pd.concat([df1, df2], axis=1, join='inner')  # 중복 인덱스 중 겹치는 것만 포함하는 방법

데이터프레임을 병합할 때 중복된 열 이름 또는 중복된 인덱스가 있는 경우, 열 이름을 변경하거나 중복된 열 또는 인덱스를 처리하여 이러한 ValueError를 해결할 수 있습니다.

반응형