본문 바로가기
self.python

[python] 데이터 프레임 행(row) 추가하기

by 톤토니 2022. 5. 22.
반응형

 

 

데이터 프레임 행(row) 추가하기

 

 

2022.05.19 - [self.python] - [python] loc , iloc 으로 행 데이터 접근하기

저번에 loc, iloc 으로 행 데이터 접근하는 방법을 공부해 봤었는데

그 때 만든 데이터 프레임을 활용해서 데이터 프레임에 행을 추가하는 방법에 대해 공부해보자.

 

 

 

import numpy as np
import pandas as pd


score = {'Year' : ['2016', '2017', '2018', '2019', '2020', '2021', '2022'],
            'Mary': [90, 68, 70, 80, 92, 68, 78],
            'Kate': [90, 68, 70, 80, 92, 68, 78],
            'Mark': [39, 59, 60, 73, 84, 87, 92],
            'Maxi': [83, 92, 71, 56, 79, 93, 85],
            'Jess': [np.nan,0, 0, 0, 44, 74, 49]}

df = pd.DataFrame(score)
df

 

학생 5명의 어떤 과목의 16 ~ 22 년도의 점수를 데이터 프레임으로 만든것이라고 하자.

 

 


 

 

딕셔너리 append( ) 으로 행 추가하기

 

딕셔너리 형식으로 새로운 데이터 행을 만들어 기존의 데이터 프레임에 .append 를 하면 새로운 행을 추가할 수 있다.

학생 5명의 23년도 점수를 추가한다고 하자.

 

myDict = { # 추가할 데이터를 딕셔너리 타입으로 만든다
    'Year' : '2023',
    'Mary' : 80,
    'Kate' : 80,
    'Mark' : 80,
    'Maxi' : 80,
    'Jess' : 80    
}

df_plus = df.append(myDict, ignore_index=True) # append를 사용하여 df 에 추가
df_plus

 

 

2023년도의 점수가 제대로 추가된 것을 확인할 수 있다.

 

 

 

 concat 을 이용하여 데이터 프레임끼리 합쳐주기

 

concat 은 데이터 프레임끼리 합치고 싶을 때 사용하는 함수이다.

내가 추가하고 싶은 데이터를 데이터 프레임 형식으로 만들어 기존의 데이터 프레임에 concat 으로 붙여주는 방법도 있다.

 

myDict = {
    'Year' : ['2023'],
    'Mary' : [80],
    'Kate' : [80],
    'Mark' : [80],
    'Maxi' : [80],
    'Jess' : [80]    
}

mydf = pd.DataFrame(myDict) # 데이터 프레임 형식으로 만들어줌

df_plus2 = pd.concat([df, mydf]) # concat 사용
df_plus2

 

 

새로운 데이터 행이 추가되었는데 행의 index 가 0 이다. 이것은 concat 할 때 ignore_index = True 를 해서 7 로 바꿀 수 도 있다.

 

df_plus2 = pd.concat([df, mydf], ignore_index=True)
df_plus2

 

 

 

*** 여기서 Year 를 index 로 사용하고 싶다면 set_index 로 index를 바꿔줄 수 있다. ***

 

df_plus3 = df_plus2.set_index(keys = ['Year'], inplace = False, drop = False)
df_plus3

 

 

Year를 index로 썼으니까 기존 열 Year는 지워버리고 싶다면 set_index의 인자 중 drop 을 True 값으로 바꿔주면 된다.

 

df_plus3 = df_plus2.set_index(keys = ['Year'], inplace = False, drop = True)
df_plus3

 

 

 

 

 

반응형

댓글