판다스 데이터프레임에 열 추가하는 5가지 방법
표목차
- 데이터 프레임에 새로운 열 추가하기
- 데이터 프레임에 스칼라 값으로 열 추가하기
- 데이터 프레임에 리스트 값으로 열 추가하기
- 데이터 프레임에 열 삽입하기
- 데이터 프레임에 여러 열 동시에 추가하기
- 데이터 프레임에 사전 값으로 열 추가하기
- 데이터 프레임에 loc 메서드를 사용하여 열 추가하기
📝 데이터 프레임에 새로운 열 추가하기
데이터 작업을 할 때 데이터 프레임에 새로운 열을 추가하는 일이 자주 발생합니다. 이는 원본 데이터 프레임에서 파생된 열을 추가하거나 새로운 데이터를 추가하는 경우입니다. 어쨌든 계속해서 데이터를 추가하거나 업데이트해야 할 것입니다. 이제 데이터 프레임에 새로운 열을 추가하는 방법을 보여드리겠습니다.
🔸 데이터 프레임에 스칼라 값으로 열 추가하기
먼저 pandas를 가져온 다음 데이터 프레임을 생성합니다. 이 데이터 프레임은 샌프란시스코의 레스토랑 목록입니다. 레스토랑 이름, 종류, 평균 요금의 열이 있습니다. 첫 번째로 해야 할 일은 레스토랑이 방문된 요일을 나타내는 새로운 열을 만드는 것입니다. 새로운 열 이름을 데이터 프레임에 전달하고 값을 스칼라 형태로 설정할 수 있습니다. 이를 통해 새로운 열을 추가하고 값을 할당할 수 있습니다.
import pandas as pd
df = pd.DataFrame({
'name': ['레스토랑1', '레스토랑2', '레스토랑3'],
'type': ['한식', '일식', '양식'],
'average_bill': [10000, 15000, 20000]
})
df['day'] = '월요일'
이제 실행해보면 새로운 'day' 열이 추가되었고 해당 열의 모든 항목이 '월요일'로 설정된 것을 볼 수 있습니다.
🔸 데이터 프레임에 리스트 값으로 열 추가하기
리스트 값을 전달하여 열을 추가할 수도 있습니다. 이번에는 'day' 열을 덮어쓰고 리스트 값을 전달해보겠습니다. 리스트의 길이가 데이터 프레임과 일치해야 함에 주의해야 합니다.
df['day'] = ['월요일', '화요일', '수요일']
위와 같이 코드를 실행하면 'day' 열의 값이 '월요일', '화요일', '수요일'로 순서대로 추가됩니다.
📝 Article
데이터를 처리하다보면 종종 데이터 프레임에 열을 추가해야 하는 일이 발생합니다. 이는 원래의 데이터 프레임에 파생 열을 추가하거나 새로운 데이터를 추가하는 경우일 수 있습니다. 이러한 상황에서는 데이터 프레임에 새로운 열을 추가하거나 업데이트하는 방법을 알고 있어야 합니다. 이번 섹션에서는 이에 대한 다섯 가지 방법을 소개하고자 합니다.
🔹 1. 데이터 프레임에 스칼라 값으로 열 추가하기
가장 간단한 방법은 먼저 새로운 열 이름을 데이터 프레임에 전달하고, 해당 열에 스칼라 값을 할당하는 것입니다. 예를 들어, 새로운 열 'day'를 만들고 값을 '월요일'로 설정하기 위해 다음과 같이 코드를 작성합니다.
import pandas as pd
df = pd.DataFrame({
'name': ['레스토랑1', '레스토랑2', '레스토랑3'],
'type': ['한식', '일식', '양식'],
'average_bill': [10000, 15000, 20000]
})
df['day'] = '월요일'
위의 코드를 실행하면 'day'라는 새로운 열이 추가되고, 모든 항목이 '월요일'로 설정되는 것을 확인할 수 있습니다.
🔹 2. 데이터 프레임에 리스트 값으로 열 추가하기
리스트 값을 전달하여 열을 추가하는 것도 가능합니다. 이 경우 'day' 열을 덮어쓰고 리스트 값을 전달하여 열을 추가할 수 있습니다. 다만, 리스트의 길이가 데이터 프레임과 일치해야 합니다. 다음과 같은 코드를 사용해보세요.
df['day'] = ['월요일', '화요일', '수요일']
위의 코드를 실행하면 'day'라는 열의 값이 '월요일', '화요일', '수요일'로 순서대로 추가됩니다.
🔹 3. 데이터 프레임에 열 삽입하기
'df.insert()' 메서드를 사용하여 열을 삽입하는 것도 가능합니다. 이 메서드를 사용하면 열이 추가될 위치를 지정할 수 있습니다. 예를 들어, 'name'과 'type' 사이에 새로운 열을 삽입해보겠습니다. 다음과 같은 코드를 사용할 수 있습니다.
df.insert(loc=1, column='stars', value=[4, 5, 3])
위의 코드를 실행하면 'stars'라는 새로운 열이 'name'과 'type' 사이에 삽입되며, 해당 열의 값은 [4, 5, 3]으로 설정됩니다.
🔹 4. 데이터 프레임에 여러 열 동시에 추가하기
'df.assign()' 메서드를 사용하면 여러 개의 열을 한 번에 추가할 수도 있습니다. 다음은 열 목록을 전달하여 'average_half_bill'이라는 새로운 열을 추가하는 예시입니다.
df.assign(average_half_bill=lambda x: x['average_bill'] / 2)
위의 코드를 실행하면 'average_half_bill'이라는 새로운 열이 추가되며, 해당 열의 값은 'average_bill' 값을 2로 나눈 값으로 설정됩니다.
🔹 5. 데이터 프레임에 사전 값으로 열 추가하기
딕셔너리를 사용하여 열을 추가하는 것도 가능합니다. 예를 들어, 'month'라는 새로운 열을 추가하고 해당 열의 값으로 'january', 'february', 'april', 'december'를 사전 형태로 전달해보겠습니다.
df = df.assign(month={'레스토랑1': 'january', '레스토랑2': 'february', '레스토랑3': 'april'})
위의 코드를 실행하면 'month'라는 새로운 열이 추가되며, 해당 열의 값은 {'레스토랑1': 'january', '레스토랑2': 'february', '레스토랑3': 'april'}로 설정됩니다.
🔹 6. 데이터 프레임에 loc 메서드를 사용하여 열 추가하기
마지막으로 loc 메서드를 사용하여 열을 추가하는 방법도 있습니다. loc 메서드는 기본적으로 데이터 프레임 내에서 값을 참조하기 위해 사용되지만 아래와 같이 값을 할당하기 위해 사용할 수도 있습니다. 다만, 이 방법은 권장되는 방법은 아닙니다. 이 방법은 참조값이 아닌 전혀 새로운 열을 생성하기 때문입니다.
df.loc[:, 'year'] = [2020, 2021, 2022]
위의 코드를 실행하면 'year'이라는 열이 추가되고, 값으로 [2020, 2021, 2022]가 할당됩니다.
장점:
- 데이터 프레임에 열을 추가하는 다양한 방법을 알고 있으므로 상황에 맞게 선택할 수 있습니다.
- 각 방법에 대한 예시와 함께 설명되어 있어 초보자에게도 쉽게 이해할 수 있습니다.
- 코드 예시와 함께 제공되므로 실제로 시도해볼 수 있습니다.
단점:
- loc 메서드를 사용하여 열을 추가하는 방법은 권장되지 않는 방법이므로 가능한 다른 방법을 사용하는 것이 좋습니다.
이렇게 다양한 방법으로 pandas 데이터 프레임에 열을 추가하거나 삽입할 수 있습니다. 상황과 요구사항에 맞게 적절한 방법을 선택하여 사용하면 데이터 분석 작업이 더욱 더 효율적으로 수행될 것입니다.
💡 하이라이트
- 데이터 프레임에 새로운 열을 추가하는 다섯 가지 방법을 소개했습니다.
- 스칼라 값이나 리스트 값을 사용하여 열을 추가할 수 있으며, 위치를 지정하여 삽입할 수도 있습니다.
- 여러 개의 열을 동시에 추가하거나 사전 형태의 값으로 열을 추가하는 방법도 있습니다.
- loc 메서드를 사용하여 열을 추가하는 방법은 권장되지 않지만 가능합니다.
📙 자주 묻는 질문
-
Q: 데이터 프레임에 열을 추가하는 것과 assign 메서드를 사용하는 것의 차이는 무엇인가요?
- assign 메서드는 한 번에 여러 개의 열을 추가할 수 있는 반면, 단순히 열을 추가하는 경우에는 데이터 프레임에 열을 직접 할당하는 것이 더 간단합니다.
-
Q: 열을 추가할 때 loc 메서드를 사용하는 것은 권장되지 않는 이유는 무엇인가요?
- loc 메서드는 주로 데이터 프레임에서 값을 참조할 때 사용되어야 합니다. 값을 설정하는 데에는 적합하지 않으며, 열을 추가하기 위해 다른 방법을 사용하는 것이 더 명확하고 권장되는 방법입니다.
-
Q: 데이터 프레임에 새로운 열을 추가할 때 값을 조건에 따라 계산하려면 어떻게 해야 하나요?
- assign 메서드를 사용하여 람다 함수를 통해 값을 조건에 따라 계산할 수 있습니다.
🌐 참고 자료