Pandas에서 여러 개의 DataFrame을 하나로 합치려면 concat() 메서드를 사용합니다. 이때 연결 과정에서 발생하는 중복된 행까지 한 번에 제거하고 싶다면 drop_duplicates() 메서드를 함께 활용하면 됩니다.
1. 필요한 라이브러리 임포트
먼저 pandas 라이브러리를 임포트합니다.
import pandas as pd
2. 연결할 DataFrame 생성
예제로 사용할 두 개의 DataFrame을 만들어 보겠습니다. 두 DataFrame에는 일부러 동일한 데이터(Jaguar, Mustang)를 포함시켰습니다.
# DataFrame1 생성
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Jaguar', 'Audi', 'Mustang'],
"Units": [100, 150, 110, 80]
}
)
# DataFrame2 생성
dataFrame2 = pd.DataFrame(
{
"Car": ['Tesla', 'Jaguar', 'Mercedes', 'Mustang'],
"Units": [120, 150, 180, 80]
}
)
3. DataFrame 연결 후 중복 제거
pd.concat()으로 두 DataFrame을 세로 방향으로 연결한 뒤, 바로 이어서 drop_duplicates()를 호출하면 모든 열의 값이 완전히 동일한 중복 행이 제거됩니다.
concatRes = pd.concat([dataFrame1, dataFrame2]).drop_duplicates()
위 예제에서는 'Jaguar'(150개)와 'Mustang'(80개) 행이 두 DataFrame에 모두 존재하므로, 각각 한 번씩만 남게 됩니다.
전체 예제 코드
import pandas as pd
# DataFrame1 생성
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Jaguar', 'Audi', 'Mustang'],
"Units": [100, 150, 110, 80]
}
)
print("DataFrame1 ...\n", dataFrame1)
# DataFrame2 생성
dataFrame2 = pd.DataFrame(
{
"Car": ['Tesla', 'Jaguar', 'Mercedes', 'Mustang'],
"Units": [120, 150, 180, 80]
}
)
print("\nDataFrame2 ...\n", dataFrame2)
# DataFrame 연결 후 중복 제거
concatRes = pd.concat([dataFrame1, dataFrame2]).drop_duplicates()
print("\n중복 없이 연결된 DataFrame...\n", concatRes)
실행 결과
DataFrame1 ...
Car Units
0 BMW 100
1 Jaguar 150
2 Audi 110
3 Mustang 80
DataFrame2 ...
Car Units
0 Tesla 120
1 Jaguar 150
2 Mercedes 180
3 Mustang 80
중복 없이 연결된 DataFrame...
Car Units
0 BMW 100
1 Jaguar 150
2 Audi 110
3 Mustang 80
0 Tesla 120
2 Mercedes 180
추가 팁: 인덱스 재설정하기
실행 결과를 보면 원본 DataFrame의 인덱스(0, 1, 2, 3 / 0, 2)가 그대로 유지되는 것을 확인할 수 있습니다. 연결 후 인덱스를 0부터 새로 매기고 싶다면 ignore_index=True 옵션을 사용하세요.
concatRes = pd.concat([dataFrame1, dataFrame2], ignore_index=True).drop_duplicates()
이렇게 하면 중복이 제거된 깔끔한 DataFrame을 연속적인 인덱스와 함께 얻을 수 있습니다.