Skip to content

Pandas DataFrame에 새 컬럼 추가하기 (예제 & 베스트 프랙티스 포함)

Updated on

새 컬럼을 추가하는 것은 Pandas DataFrame을 다룰 때 가장 자주 수행되는 작업 중 하나입니다. 계산된 필드를 만들거나, 특정 위치에 컬럼을 삽입하거나, 동적으로 DataFrame을 구성할 때 Pandas는 이를 손쉽게 처리할 수 있는 강력한 여러 가지 기법을 제공합니다.

이 2025년 업데이트 가이드는 다음 내용을 다룹니다:

  • 새 컬럼을 추가하는 6가지 최고의 방법
  • 각 방법을 언제 사용해야 하는지
  • 기존 데이터를 기반으로 컬럼 추가하기
  • 흔한 실수 피하기 (예: SettingWithCopyWarning)
  • 실무 예제

⭐ 빠른 팁: DataFrame을 시각적 분석 도구로 바꾸기

DataFrame을 바로 시각화하고 싶나요?

PyGWalker는 어떤 Pandas 또는 Polars DataFrame이든 Jupyter Notebook 안에서 Tableau와 비슷한 인터랙티브 UI 로 즉시 변환해 줍니다.

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
KaggleColabGitHub
Run PyGWalker in Kaggle (opens in a new tab)Run in Google Colab (opens in a new tab)Give us a ⭐️ (opens in a new tab)

Pandas DataFrame이란?

DataFrame은 Excel이나 SQL 테이블과 유사한, 행과 열로 이루어진 2차원 레이블 테이블입니다. Pandas에서는 다음과 같은 데이터로부터 DataFrame을 만들 수 있습니다:

  • CSV
  • Excel
  • SQL
  • JSON
  • Python 리스트 & 딕셔너리

그리고 이를 조작하고 분석하기 위한 강력한 API를 제공합니다.


📌 Pandas에서 새 컬럼을 추가하는 방법 (간단 요약)

MethodBest ForExample
1. Assignment (df['col'] = ...)가장 일반적/단순한 경우df['salary'] = ...
2. Insert column (df.insert)특정 위치에 삽입할 때df.insert(1, 'x', ...)
3. Assign (df.assign)메서드 체이닝 스타일df = df.assign(x=...)
4. Concat (pd.concat)여러 컬럼을 한 번에 추가할 때pd.concat([df, df2], axis=1)
5. Based on existing columns실무 변환 작업df['age2'] = df['age'] * 2
6. Conditional columnsif-else 조건 로직np.where(...)

이제 각 방법을 예제와 함께 살펴보겠습니다.


1. 방법: 단순 할당 (대부분의 경우에 가장 적합)

df['NewColumn'] = [1, 2, 3, 4]

▶ 예제

df['Salary'] = [50000, 60000, 70000, 80000]

언제 사용할까:

  • 가장 일반적이고 가장 단순한 방법
  • 상수 값, 리스트, 배열, 계산 결과 등을 추가할 때

참고 사항:

  • 같은 이름의 컬럼이 이미 있으면 덮어쓴다
  • 매우 효율적이다

2. 방법: 특정 위치에 컬럼 삽입하기 (df.insert)

df.insert(loc=1, column='Department', value=['IT', 'HR', 'Finance', 'Admin'])

이런 경우에 사용:

  • 컬럼 순서를 정확하게 제어하고 싶을 때
  • 리포트용, 구조화된 데이터 내보내기 등에 유용할 때

3. 방법: assign으로 컬럼 추가하기 (함수형 / 체이닝 스타일)

df = df.assign(Tax=lambda x: x['Salary'] * 0.1)

장점:

  • 메서드 체이닝에 적합
  • 재할당하지 않는 한 원본 DataFrame을 직접 수정하지 않는다

4. 방법: pd.concat으로 컬럼 추가하기

df2 = pd.DataFrame({'Bonus': [1000, 2000, 2500, 1800]})
df = pd.concat([df, df2], axis=1)

이런 경우에 사용:

  • 여러 개의 새 컬럼을 한 번에 붙일 때
  • 두 개의 DataFrame을 가로 방향으로 결합할 때

피해야 할 경우:

  • 컬럼 하나만 추가할 때 → 단순 할당이 더 빠르다

5. 기존 컬럼을 기반으로 새 컬럼 추가하기 (실무 예제)

이것이 가장 많이 쓰이는 1번 사용 사례입니다 — 원래 글에는 없었던 내용입니다.

예제: 총점 컬럼 만들기

df['Total'] = df['Math'] + df['Science'] + df['English']

예제: 값 정규화하기

df['Age_Norm'] = df['Age'] / df['Age'].max()

6. 조건부 컬럼 (np.where 또는 boolean mask)

예제: "Senior" 여부 표시 컬럼 추가

import numpy as np
df['Senior'] = np.where(df['Age'] >= 35, 'Yes', 'No')

Boolean mask 버전

df['IsAdult'] = df['Age'] > 18

이런 경우에 사용:

  • 분류용 레이블을 만들 때
  • 이진 조건을 표현할 때

기존 컬럼 덮어쓰기

가능합니다 — 단순 할당이 컬럼을 덮어씁니다:

df['Age'] = [26, 31, 36, 41]

컬럼 이름 기준으로 위치에 삽입하기

df.insert(df.columns.get_loc("Age"), 'Score', [1, 2, 3, 4])

컬럼 순서가 기존 컬럼 이름에 의존할 때 (예: 자동화된 파이프라인) 유용합니다.


⚠ 피해야 할 대표적인 실수: SettingWithCopyWarning

DataFrame을 잘못 슬라이싱하면:

subset = df[df['Age'] > 30]
subset['Flag'] = 1   # Warning!

해결 방법:

subset = df[df['Age'] > 30].copy()
subset['Flag'] = 1

마무리

이제 Pandas에서 새 컬럼을 추가하는 6가지 핵심 방법을 알게 되었습니다:

  • 단순 할당 (기본으로 가장 추천되는 방법)
  • 정확한 순서를 위한 insert 메서드
  • 체이닝을 위한 assign 메서드
  • DataFrame 결합을 위한 concat
  • 계산 기반 컬럼
  • 조건 로직 기반 컬럼

이 기법들을 사용하면 DataFrame을 효율적으로 조작하고, 흔한 함정을 피할 수 있습니다.


FAQ (SEO & 사용자 지원용)

1. 같은 값으로 채워진 컬럼을 추가하려면?

df['Source'] = 'System'

2. 함수를 기반으로 컬럼을 추가하려면?

df['Score'] = df.apply(lambda x: x['Math'] * 0.6 + x['English'] * 0.4, axis=1)

3. 여러 컬럼을 한 번에 추가하려면?

df[['A', 'B']] = df[['X', 'Y']] * 2

4. 가장 빠른 방법은 무엇인가요?

대부분의 경우 단순 할당 (df['col'] = ...) 이 가장 효율적입니다.