Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Pandas DataFrame에 새 열 추가하는 3가지 방법 완벽 정리

이 튜토리얼에서는 Python의 Pandas 라이브러리에서 기존 DataFrame에 새로운 열(column)을 추가하는 다양한 방법을 알아봅니다. 새 열을 추가하는 방법은 여러 가지가 있으며, 각 방식마다 장점과 활용 상황이 다릅니다. 지금부터 대표적인 세 가지 방법을 하나씩 살펴보겠습니다.

1. 리스트(List)를 이용한 열 추가

가장 간단하고 직관적인 방법은 리스트를 사용하는 것입니다. 아래 단계를 따라 새 열을 추가할 수 있습니다.

알고리즘

1. 딕셔너리를 사용하여 DataFrame을 생성합니다.
2. 새 열에 들어갈 데이터를 리스트로 만듭니다.
   ※ 반드시 기존 DataFrame의 데이터 길이와 일치해야 합니다.
3. 딕셔너리 요소를 추가하듯이 리스트를 DataFrame에 할당합니다.

예제

# pandas 임포트
import pandas as pd

# DataFrame 생성
data = {
    'Name': ['Hafeez', 'Aslan', 'Kareem'],
    'Age': [19, 18, 15],
    'Profession': ['Pythoneer', 'Programmer', 'Student']
}
dataframe = pd.DataFrame(data)
print('-----------새 열 추가 전----------')
print(dataframe)
print('\n\n')

# 새 열을 위한 리스트 생성
places = ['Nellore', 'Mumbai', 'Andhra']

# 'Places'를 열 이름으로 사용하여
# 리스트를 DataFrame의 새 열로 추가
dataframe['Places'] = places
print('---------------새 열 추가 후------------')
print(dataframe)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

-----------새 열 추가 전----------
    Name     Age   Profession
0  Hafeez    19    Pythoneer
1   Aslan    18   Programmer
2  Kareem    15      Student
---------------새 열 추가 후------------
    Name   Age    Profession     Places
0  Hafeez   19    Pythoneer    Nellore
1   Aslan   18   Programmer     Mumbai
2  Kareem   15      Student     Andhra

이처럼 dataframe['열이름'] = 리스트 형태로 작성하면 새 열이 DataFrame 맨 오른쪽에 자동으로 추가됩니다.

2. DataFrame.insert() 메서드 활용

특정 위치에 열을 삽입하고 싶다면 내장 메서드인 insert()를 사용하는 것이 좋습니다. 이 메서드는 원하는 인덱스 위치에 정확히 열을 배치할 수 있다는 점에서 유용합니다.

알고리즘

1. 딕셔너리를 사용하여 DataFrame을 생성합니다.
2. 새 열 데이터를 담은 리스트를 만듭니다.
   ※ 기존 DataFrame의 데이터 길이와 일치해야 합니다.
3. DataFrame.insert(index, column_name, data) 메서드를
   사용하여 데이터를 삽입합니다.

예제

# pandas 임포트
import pandas as pd

# DataFrame 생성
data = {
    'Name': ['Hafeez', 'Aslan', 'Kareem'],
    'Age': [19, 18, 15],
    'Profession': ['Pythoneer', 'Programmer', 'Student']
}
dataframe = pd.DataFrame(data)
print('-----------새 열 추가 전----------')
print(dataframe)
print('\n\n')

# 새 열을 위한 리스트 생성
places = ['Nellore', 'Mumbai', 'Andhra']

# insert(index, column_name, data)를 사용하여
# 리스트를 DataFrame의 새 열로 추가
dataframe.insert(2, 'Places', places)
print('---------------새 열 추가 후------------')
print(dataframe)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

-----------새 열 추가 전----------
      Name  Age Profession
0   Hafeez   19  Pythoneer
1    Aslan   18 Programmer
2   Kareem   15    Student

---------------새 열 추가 후------------
     Name  Age   Places Profession
0  Hafeez   19  Nellore  Pythoneer
1   Aslan   18   Mumbai  Programmer
2  Kareem   15   Andhra     Student

출력 결과를 보면 'Places' 열이 인덱스 2번 위치, 즉 'Age'와 'Profession' 사이에 삽입된 것을 확인할 수 있습니다.

3. DataFrame.assign() 메서드 활용

assign() 메서드는 새 열 데이터를 인자로 받아 DataFrame의 맨 마지막에 열로 추가합니다. 특징적으로 이 메서드는 원본을 수정하지 않고 새로운 DataFrame을 반환하기 때문에, 반환값을 별도의 변수에 저장해야 합니다.

알고리즘

1. 딕셔너리를 사용하여 DataFrame을 생성합니다.
2. 새 열 데이터를 담은 리스트를 만듭니다.
   ※ 기존 DataFrame의 데이터 길이와 일치해야 합니다.
3. DataFrame.assign(column_name = data) 메서드를 사용하여
   데이터를 삽입합니다. 새 DataFrame이 반환되므로 변수에 저장합니다.
4. 새 DataFrame을 출력합니다.

예제

# pandas 임포트
import pandas as pd

# DataFrame 생성
data = {
    'Name': ['Hafeez', 'Aslan', 'Kareem'],
    'Age': [19, 18, 15],
    'Profession': ['Pythoneer', 'Programmer', 'Student']
}
dataframe = pd.DataFrame(data)
print('-----------새 열 추가 전----------')
print(dataframe)
print('\n\n')

# 새 열을 위한 리스트 생성
places = ['Nellore', 'Mumbai', 'Andhra']

# assign(column_name = data)를 사용하여
# 리스트를 DataFrame의 새 열로 추가
new_dataframe = dataframe.assign(Places = places)
print('---------------새 열 추가 후------------')
print(new_dataframe)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

-----------새 열 추가 전----------
    Name     Age    Profession
0  Hafeez    19     Pythoneer
1   Aslan    18    Programmer
2  Kareem    15        Student
---------------새 열 추가 후------------
     Name    Age   Profession     Places
0  Hafeez    19    Pythoneer    Nellore
1   Aslan    18   Programmer     Mumbai
2  Kareem    15       Student     Andhra

마무리 및 방법별 비교

지금까지 Pandas DataFrame에 새 열을 추가하는 세 가지 방법을 살펴보았습니다. 각 방법의 특징을 정리하면 다음과 같습니다.

  • 리스트 할당 (df['열'] = 리스트): 가장 간단하며, 항상 맨 끝에 열이 추가됩니다.
  • insert(): 원하는 위치(인덱스)에 열을 삽입할 수 있으며, 원본 DataFrame을 직접 수정합니다.
  • assign(): 원본을 변경하지 않고 새 DataFrame을 반환하므로, 함수형 스타일의 코드 작성에 적합합니다.

상황에 맞는 방법을 선택하여 사용하시기 바랍니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.