본문 바로가기

Dev

Python에서 Pandas DataFrame의 컬럼(columns) 추가 방법[예시코드 포함]

Pandas에서는 assign, insert, loc 및 iloc과 같은 다양한 방법을 사용하여 DataFrame에 열을 추가할 수 있습니다.

 

assign 방법: 열 이름과 값을 지정하여 할당 메서드를 사용하여 DataFrame에 새 열을 추가할 수 있습니다. 예를 들어 다음 코드는 값이 "value1", "value2" 및 "value3"인 "col3"이라는 새 열을 추가합니다.

df = df.assign(col3 = ['value1', 'value2', 'value3'])

이 방법은 새 열과 함께 새 DataFrame을 반환하고 원래 DataFrame을 수정하지 않기 때문에 DataFrame에 열을 추가하는 가장 빠른 방법 중 하나로 간주됩니다.

 

 

insert 방법: 삽입 메서드를 사용하여 새 열의 위치, 열 이름 및 값을 지정하여 DataFrame에 새 열을 추가할 수 있습니다. 예를 들어 다음 코드는 값이 "value1", "value2" 및 "value3"인 위치 2에 "col3"이라는 새 열을 추가합니다.

df.insert(2, 'col3', ['value1', 'value2', 'value3'], True)

이 방법은 원래 DataFrame을 수정하지 않고 특정 위치에 새 열을 삽입할 수 있으므로 loc 또는 iloc 방법을 사용하는 것보다 빠른 것으로 간주됩니다.

 

 

loc 및 iloc 방법: loc 및 iloc 메서드를 사용하여 행 인덱스와 각 열의 값을 지정하여 DataFrame에 새 열을 추가할 수 있습니다. 예를 들어 다음 코드는 "col3"이라는 새 열을 DataFrame에 추가합니다.

df.loc[:, 'col3'] = ['value1', 'value2', 'value3']

또는

df['col3'] = ['value1', 'value2', 'value3']

이러한 메서드는 원래 DataFrame을 수정하므로 할당 및 삽입 메서드보다 느린 것으로 간주됩니다.

 

 

실행 속도 측면에서 DataFrame에 열을 추가하는 가장 빠른 방법은 새 열과 함께 새 DataFrame을 반환하므로 assign 메서드를 사용하는 것입니다.

삽입 방법은 원래 DataFrame을 수정하지 않고 특정 위치에 새 열을 삽입할 수 있으므로 빠른 것으로 간주됩니다.

loc 및 iloc 방법은 원래 DataFrame을 수정하므로 속도가 느립니다.

 

따라서 속도는 assign > insert > loc/iloc 순으로 실행 속도가 빠른 것을 알 수 있습니다.

 

 

DataFrame에 새 열을 추가할 때 새 열의 길이는 원래 DataFrame의 행 수와 일치해야 합니다. 길이가 일치하지 않으면 오류가 발생하거나 일치하지 않는 행에 NaN 값이 있는 새 열이 추가됩니다.

 

 

실습 코드 예시

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})

# Using the assign method
df = df.assign(col3 = ['value1', 'value2', 'value3'])
print(df)
'''
   col1  col2    col3
0     1     4  value1
1     2     5  value2
2     3     6  value3
'''

# Using the insert method
df.insert(2, 'col4', ['value4', 'value5', 'value6'], True)
print(df)
'''
   col1    col4  col2    col3
0     1  value4     4  value1
1     2  value5     5  value2
2     3  value6     6  value3
'''

# Using the loc method
df.loc[:, 'col5'] = ['value7', 'value8', 'value9']
print(df)
'''
   col1    col4  col2    col3    col5
0     1  value4     4  value1  value7
1     2  value5     5  value2  value8
2     3  value6     6  value3  value9
'''

# Using the iloc method
df['col6'] = ['value10', 'value11', 'value12']
print(df)
'''
   col1    col4  col2    col3    col5    col6
0     1  value4     4  value1  value7  value10
1     2  value5     5  value2  value8  value11
2     3  value6     6  value3  value9  value12
'''