Python/Pandas

[Pandas] 파이썬 데이터프레임 행 추가, 열 추가 방법 정리

jimmy_AI 2022. 4. 12. 18:15
반응형

파이썬 판다스 DataFrame 새로운 행/열 삽입 예제

파이썬의 데이터프레임 자료형에 새로운 행과 열을 추가할 수 있는 방법들을

경우의 수를 나눠서 알기 쉽게 정리해보도록 하겠습니다.

 

이해를 돕기 위하여, 아래 형태의 데이터프레임이 df라는 변수에 저장되어 있는 상황을 가정하고

행 혹은 열이 추가되는 예시 결과들을 비교해보도록 하겠습니다.

import pandas as pd

df = pd.DataFrame({'A' : ['a1', 'a2', 'a3', 'a4'], 'B' : ['b1', 'b2', 'b3', 'b4'], 'C' : ['c1', 'c2', 'c3', 'c4']})

df

 

 

행 삽입 방법 1(마지막 위치에 추가) : df.loc 함수 사용

맨 뒤의 위치에 row를 덧붙이는 경우에는 마지막 index 번호 + 1의 위치에 loc 함수를 이용하여

아래 코드로 간단히 행을 추가하는 것이 가능합니다.

df.loc[4] = ['a5', 'b5', 'c5']

df

기존 df에서 마지막 인덱스 번호가 3번이었기에, df.loc[4] = 원소 리스트 형태로

행 추가를 시도했습니다.

 

 

행 삽입 방법 2(마지막 위치, 여러 개) : df.append 함수 사용

여러 개의 행을 맨 뒤의 위치에 동시에 이어 붙이고 싶은 경우에는 df.append 메소드를

이용해주시면 편리합니다.

 

삽입을 원하는 행들의 데이터프레임을 지정해주신 뒤, append의 input으로 지정하시면 됩니다.

다만, ignore_index 인자를 True로 설정해주셔야 인덱스가 기존 행의 뒷 번호로 잘 지정됩니다.

df2 = pd.DataFrame({'A' : ['a5', 'a6'], 'B' : ['b5', 'b6'], 'C' : ['c5', 'c6']})

df2

이어 붙여볼 데이터프레임은 위와 같으며, 열 이름을 원래 df와 맞춰주어야 행 추가가 진행됩니다.

new_df = df.append(df2, ignore_index = True)

new_df

참고로, append 결과를 다른 변수에 재선언하셔야 행 추가가 반영된 결과 활용이 가능합니다.

 

 

행 삽입 방법 3(여러 개) : pd.concat 함수 사용

두 데이터프레임을 이어 붙이는 pd.concat 함수로도 df.append와 비슷한 원리로

행 추가가 가능합니다. 아래 결과의 new_df는 2번 예제의 new_df와 같은 형태가 반환됩니다.

new_df = pd.concat([df, df2], ignore_index = True)

new_df

여기서도 2번 예제와 마찬가지 이유로 ignore_index = True 설정을 권장드립니다.

반응형

행 삽입 방법 4(중간 위치에 추가) : concat과 iloc 함수 사용

만일, 맨 뒤 위치가 아닌 중간 위치에 행을 추가하고 싶은 경우에는

concat과 iloc 함수를 같이 사용하여 진행이 가능합니다.

 

만일, n번 인덱스에 해당 row를 추가하고 싶은 경우,

pd.concat([df.iloc[:n], 원하는 행, df.iloc[n:], ignore_index = True) 형태로 지정하시면

n-1번까지의 행과 해당 행, 그리고 n번 이후의 행들이 이어 붙여지면서 중간 위치 삽입이 됩니다.

new_row = pd.DataFrame([['aaa', 'bbb', 'ccc']], columns = df.columns)

new_df = pd.concat([df.iloc[:2], new_row, df.iloc[2:]], ignore_index = True)

new_df

2번 위치에 새로운 행이 잘 추가된 모습을 볼 수 있었습니다.

여기서도 새로운 행 지정 시, 열 이름을 기존 데이터프레임과 일치시켜줘야 합니다.

 

 

열 삽입 방법 1(마지막 위치에 추가) : df[열 이름] = 원소 리스트

가장 맨 뒤의 위치에 새로운 column을 덧붙이려는 경우, df[열 이름] = 원소 리스트 형태

손쉽게 진행이 가능합니다.

df['D'] = ['d1', 'd2', 'd3', 'd4']

df

새로운 칼럼인 D 열이 마지막 위치에 잘 추가된 모습을 확인할 수 있었습니다.

 

 

열 삽입 방법 2(중간 위치에 추가) : df.insert 함수 사용

만일, 맨 뒤 위치가 아닌 중간 위치에 새로운 열을 넣고 싶다면,

df.insert(위치 번호, 열 이름, 원소 리스트) 형태로 3개의 input을 지정해주시면 됩니다.

df.insert(1, 'D', ['d1', 'd2', 'd3', 'd4'])

df

1번 위치로 지정시, 새롭게 지정한 D column이 두 번째 열로 지정된 모습을 볼 수 있었습니다.