파이썬 판다스 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이 두 번째 열로 지정된 모습을 볼 수 있었습니다.
'Python > Pandas' 카테고리의 다른 글
[Pandas] 파이썬 피벗테이블 생성 : pd.pivot_table 함수 사용법 정리 (0) | 2022.04.21 |
---|---|
[Pandas] 파이썬 데이터프레임 열 이름 바꾸기 방법 정리 : columns, rename (0) | 2022.04.09 |
[Pandas] txt 파일을 데이터프레임으로 여는 방법 정리 (0) | 2022.04.02 |