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)| Kaggle | Colab | GitHub |
|---|---|---|
| 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에서 새 컬럼을 추가하는 방법 (간단 요약)
| Method | Best For | Example |
|---|---|---|
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 columns | if-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']] * 24. 가장 빠른 방법은 무엇인가요?
대부분의 경우 단순 할당 (df['col'] = ...) 이 가장 효율적입니다.