본문 바로가기

BLOG/데이터분석

[데이터분석] 데이터프레임 : assign() 으로 새로운 칼럼(열) 추가하기

 

이전 글에서는 df['칼렴명'] = "입력할 값" 또는 df['칼럼명'] = list(or array) 로 데이터프레임에 새로운 칼럼을 추가하는 방법에 대해 살펴보았는데요, 이번 글에서는 assign() 함수로 새로운 칼럼을 추가하는 방법에 대해서 설명하도록 하겠습니다.

 

 

- assign() : 데이터프레임에 새로운 칼럼 추가하기

assign() 함수는 데이터프레임에 새로운 열을 추가해주는 함수인데요, 먼저, 아래와 같은 데이터프레임(df)이 있다고 가정해보겠습니다.

 

	item	count	price	rating
0	coffee	1	3000	4.5
1	juice	5	4000	3.0
2	ade	2	5000	4.0
3	milk	1	3000	2.5
4	tea	3	4000	3.0
5	water	2	1000	4.5

 

1) 동일한 값 추가하기

assign() 함수는 assign(칼럼명 = '입력데이터') 와 같이 사용하면 되는데요, '입력데이터'에는 문자열, 숫자, 리스트, array 모두 가능합니다. 

 

한편, 동일한 값을 추가하기 위해선 '입력데이터'에 문자열 또는 숫자를 입력하면 되는데요, 'category' 라는 새로운 칼럼명에 'drink' 라는 동일한 값을 추가해보겠습니다.

 

df = df.assign(category = 'drink')

 

위와 같이 입력하고 데이터프레임을 출력하면 다음과 같이 출력됩니다.

 

	item	count	price	rating	category
0	coffee	1	3000	4.5	drink
1	juice	5	4000	3.0	drink
2	ade	2	5000	4.0	drink
3	milk	1	3000	2.5	drink
4	tea	3	4000	3.0	drink
5	water	2	1000	4.5	drink

 

그 결과, 'category' 라는 새로운 칼럼이 추가되었고, 'drink' 라는 동일한 데이터가 입력되었음을 확인할 수 있습니다.

 

 

2) 각각 다른 값 추가하기 - array / list

한편, 동일하지 않고 행마다 다른 값을 추가하기 위해선 array와 list를 이용하면 되는데요, 아래와 같은 array와 list가 있다고 가정해보겠습니다.

 

arr1 = np.array([1,2,3,4,5,6])
list1 = [50,45,40,35,30,25]

 

그리고나서 assign 함수를 사용하여 assign(칼럼명 = array) 또는 assign(칼럼명 = list) 과 같이 입력하여 추가해보겠습니다.

 

df = df.assign(rank=arr1)
df = df.assign(score=list1)

display(df)

 

	item	count	price	rating	category  rank	score
0	coffee	1	3000	4.5	drink	  1	50
1	juice	5	4000	3.0	drink	  2	45
2	ade	2	5000	4.0	drink	  3	40
3	milk	1	3000	2.5	drink	  4	35
4	tea	3	4000	3.0	drink	  5	30
5	water	2	1000	4.5	drink	  6	25

 

그 결과, 새로운 칼럼이 잘 추가되었음을 볼 수 있습니다. 이때 주의할 점이 있는데요, 추가할 array와 list의 길이가 데이터프레임의 행의 개수와 동일해야 한다는 것입니다. 만약 동일하지 않으면 에러가 난답니다.

 

 

 

- assign() : 데이터프레임에 여러 개의 칼럼 한 번에 추가하기

한편, assign() 함수의 가장 큰 장점은 코드 한 줄로 여러 개의 칼럼을 한 번에 추가할 수 있다는 것인데요,

위에서 일일이 추가한 것들을 아래와 같이 한 번에 추가할 수 있습니다.

 

df = df.assign(category = 'drink', rank=arr1, score=list1)

 

그리고나서 데이터프레임을 출력하면 아래와 같이 모두 추가된 데이터프레임을 확인할 수 있습니다.

 

	item	count	price	rating	category  rank	score
0	coffee	1	3000	4.5	drink	  1	50
1	juice	5	4000	3.0	drink	  2	45
2	ade	2	5000	4.0	drink	  3	40
3	milk	1	3000	2.5	drink	  4	35
4	tea	3	4000	3.0	drink	  5	30
5	water	2	1000	4.5	drink	  6	25