본문 바로가기
Data Science/Pandas, Numpy

[ Pandas ] DataFrame 컬럼 추가 / 삭제 방법

by Queen2 2022. 10. 4.
728x90
반응형

SQL에서는 insert, update,delete 등의 구문을 통해 데이터를 추가, 삭제 등이 가능했는데요

DataFrame에서는 어떻게 이러한 기능을 실행할 수 있는지 보겠습니다.

 

 

👌 컬럼 추가

 

1. DataFrame.assign(추가컬럼이름 = 값)

여기서 '값'에는 값을 나열한 리스트가 올 수도 있고, 조건문이 담긴 함수가 올 수도 있습니다.

 

 

예를 들어, 기존에 4행을 가진 DataFrame 이 있다면 기존의 길이에 맞춰서

df = df.assign(score=[70,80,90,100]) 을 추가할 수 있습니다.

 

혹은, 아래와 같이 lambda를 이용해서 새로운 컬럼을 추가할 수도 있습니다.

 

df
          temp_c
Portland    17.0
Berkeley    25.0

df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32)

          temp_c  temp_f
Portland    17.0    62.6
Berkeley    25.0    77.0

Source: pandas.pydata.org

 

2. DataFrame[ '컬럼명' ] = 값

이 방식은 assign을 굳이 쓰지 않고도 간편하게 값을 넣는 방법입니다.

 

df ['student_score'] = np.round(df['midtest']/2,1)

df['result'] = ['pass' if score>60 else 'fail' for score in df['report']]

 

 

728x90

 

👌 컬럼 삽입

 

1. DataFrame.insert(컬럼을 넣고 싶은 index, 칼럼이름, 값)

추가와 달리 어떤 특정 위치에 이 칼럼을 넣고 싶다!라고 한다면 삽입을 사용하게 되는데요

영어로 삽입을 뜻하는 insert를 사용해주면 됩니다

 

>>> df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
>>> df
   col1  col2
0     1     3
1     2     4

>>> df.insert(1, "newcol", [99, 99])
>>> df
   col1  newcol  col2
0     1      99     3

1     2      99     4

>>> df.insert(0, "col1", [100, 100], allow_duplicates=True)
>>> df
   col1  col1  newcol  col2
0   100     1      99     3
1   100     2      99     4

Source: Pandas.pydata.org

 


 

✔ 컬럼 삭제

이제 칼럼을 삭제하고 싶다면? 단일컬럼의 경우 pop, del 을 사용하고 다중컬럼은 drop을 사용하면 됩니다

 

1. 단일 컬럼 > df.pop('컬럼이름')

df.pop('orange')

df.pop('apple')

 

 

2. 단일 컬럼 > del df['컬럼이름')

del df['orange']

del df['apple']

 

3. 2개 이상의 다중 컬럼 > df.drop(없앨 컬럼명, axis=0 or 1)

가장 활용도가 높은 방법인 drop은 주로 데이터 분석을 할 때 불필요한 데이터들을 한번에 제외시키기 위해 사용합니다.

 

사용하는 방법은 이렇게

1) columns 명시를 통해 이름을 기재하는 법 2) 이름을 나열하고 axis로 행열인지 구분하는 법 2가지가 있습니다

 

df.drop(columns = ['a','b','c'])

df.drop(['a','b'], axis=1)

 

 


 

👌 행 추가

행을 추가하는 방법도 어렵지 않습니다!

 

열이 동일한 데이터프레임이 있을 때는 df.append()

new = df1.append(df2,ignore_index = True)

>>> df1
   A  B
x  1  2
y  3  4

>>> df.append(df2)
   A  B
x  1  2
y  3  4
x  5  6
y  7  8

>>> df.append(df2, ignore_index=True)
   A  B
0  1  2
1  3  4
2  5  6
3  7  8

 

728x90
반응형

댓글