데이터 분석 작업에서 두 개의 판다스(Pandas) 시리즈(Series)를 하나의 데이터프레임(DataFrame)으로 결합해야 하는 경우가 자주 있습니다. 예를 들어 'Id' 시리즈와 'Age' 시리즈를 합치면 다음과 같은 결과를 얻을 수 있습니다.
Id Age 0 1 12 1 2 13 2 3 12 3 4 14 4 5 15
이 문제를 해결하는 방법은 크게 세 가지가 있으며, 각 방법의 특징과 함께 순서대로 살펴보겠습니다.
방법 1: 새로운 열(Column) 추가하기
두 개의 시리즈를 각각 series1과 series2로 정의합니다.
첫 번째 시리즈를 데이터프레임으로 변환한 뒤 변수 df에 저장합니다.
df = pd.DataFrame(series1)
데이터프레임에 'Age'라는 이름의 새 열을 만들고, 그 안에 두 번째 시리즈를 할당합니다.
df['Age'] = pd.DataFrame(series2)
예제 코드
아래 코드를 실행하면 동작 과정을 쉽게 이해할 수 있습니다.
import pandas as pd series1 = pd.Series([1,2,3,4,5],name='Id') series2 = pd.Series([12,13,12,14,15],name='Age') df = pd.DataFrame(series1) df['Age'] = pd.DataFrame(series2) print(df)
출력 결과
Id Age 0 1 12 1 2 13 2 3 12 3 4 14 4 5 15
방법 2: pandas.concat() 함수 사용하기
두 개의 시리즈를 정의합니다.
pandas의 concat 함수에 두 시리즈를 리스트로 전달하고, 축(axis)을 1로 지정하면 열 기준으로 가로 방향 결합이 이루어집니다.
pd.concat([series1,series2],axis=1)
예제 코드
아래 코드를 통해 직접 확인해 보겠습니다.
import pandas as pd series1 = pd.Series([1,2,3,4,5],name='Id') series2 = pd.Series([12,13,12,14,15],name='Age') df = pd.concat([series1,series2],axis=1) print(df)
출력 결과
Id Age 0 1 12 1 2 13 2 3 12 3 4 14 4 5 15
방법 3: DataFrame.join() 함수 사용하기
두 개의 시리즈를 정의합니다.
첫 번째 시리즈를 데이터프레임으로 변환하여 df에 저장합니다.
df = pd.DataFrame(series1)
join 함수를 사용해 두 번째 시리즈를 인덱스 기준으로 연결합니다.
df = df.join(series2)
예제 코드
전체 코드는 다음과 같습니다.
import pandas as pd series1 = pd.Series([1,2,3,4,5],name='Id') series2 = pd.Series([12,13,12,14,15],name='Age') df = pd.DataFrame(series1) df = df.join(series2) print(df)
출력 결과
Id Age 0 1 12 1 2 13 2 3 12 3 4 14 4 5 15
세 가지 방법 비교 및 정리
세 가지 방법 모두 동일한 결과를 반환하지만, 상황에 따라 더 적합한 방법이 다릅니다.
- 열 추가 방식: 초보자에게 가장 직관적이며, 기존 데이터프레임에 열을 하나씩 추가할 때 유용합니다.
- concat() 방식: 세 개 이상의 시리즈를 한 번에 결합할 수 있어 확장성이 뛰어납니다.
- join() 방식: 인덱스를 기준으로 데이터를 정렬하며 연결하므로, 인덱스가 일치하는 데이터를 다룰 때 안정적입니다.
참고로 시리즈를 생성할 때 name 매개변수로 지정한 이름이 곧 데이터프레임의 열 이름이 됩니다. 따라서 결합 전에 각 시리즈에 적절한 이름을 부여해 두면 별도의 열 이름 변경 작업 없이도 깔끔한 형태의 데이터프레임을 바로 얻을 수 있습니다.