본문 바로가기
데이터 분석/데이터 전처리

[Pandas] 12. 행 추가/삭제하기

by 부자 꽁냥이 2020. 9. 30.

안녕하세요~ 꽁냥이에요.

 

이번 포스팅은 Pandas에서 새로운 행 데이터를 데이터프레임에 추가, 삭제하는 방법에 대해서 알아보려고 합니다.

 

1. Pandas 행 추가하기

2. Pandas 행 삭제하기


   1. Pandas 행 추가하기 

먼저 예제용 데이터를 만들어줄게요.

 

import pandas as pd

data = {
    '이름' : ['꽁냥이','옹냥이'],
    '나이' : [22, 16],
    '키' : [183, 181]
}
df = pd.DataFrame(data) ## 데이터

 

 

꽁냥이는 아래의 데이터를 추가할 거예요.

 

아이린, 26, 160

 

Pandas에서는 행 삽입하는 여러가지 기능을 제공하고 있습니다. 여기서는 위의 행 데이터를 삽입하는 방법 3가지를 소개합니다.

 

concat 이용하기

append 이용하기

loc 이용하기

 

1. concat 이용하기

concat을 이용하기 위해서는 새로운 행 데이터를 데이터프레임으로 만들어준 후 concat을 통해서 합쳐주어야 합니다.

 

## concat 이용하기
new_data = {
    '이름' : ['아이린'],
    '나이' : [26],
    '키' : [160]
}
new_df = pd.DataFrame(new_data)

df = pd.concat([df,new_df])

 

2. append 이용하기

append를 이용하면 행데이터를 칼럼 이름은 키, 데이터를 값으로 하는 딕셔너리로 만들어주기만 하면 됩니다. concat을 이용했다면 데이터프레임으로 만들어줘야하지만 append를 이용한다면 데이터프레임으로 만들지 않아도 됩니다.

 

## append 이용하기
new_data = {
    '이름' : '아이린',
    '나이' : 26,
    '키' : 160
}
df = df.append(new_data, ignore_index=True)

3. loc 이용하기

새로운 행 데이터를 리스트로만 만들어주면 loc을 이용하여 삽입할 수 있습니다. 이때 loc에 들어가는 인덱스는 맨 마지막에 대응하는 인덱스로 설정합니다.

 

## loc 이용하기
new_data = ['아이린',26,160]

df.loc[len(df)] = ['아이린',26,160]

 

 

여기서 잠깐!!

 

지금까지는 데이터 맨 마지막행에 행을 삽입했는데 중간에 삽입하기 위해서는 어떻게 해야 할까요?

 

꽁냥이는 첫 번째 행과 두 번째 행 사이에 새로운 데이터를 삽입할 거예요.

 

## 원하는 위치에 넣기
new_data = {
    '이름' : '아이린',
    '나이' : 26,
    '키' : 160
}

idx = 1 ## 원하는 인덱스

temp1 = df[df.index < idx]
temp2 = df[df.index >= idx]
df = temp1.append(new_data,ignore_index=True).append(temp2, ignore_index=True)

 

line 8

새로운 데이터는 두 번째 행에 들어가야 하므로 이에 대응하는 인덱스를 설정합니다.

 

line 10~11

새로운 데이터가 들어가는 인덱스를 기준으로 데이터를 나눕니다.

 

line 12

append를 사용하여 기준 인덱스보다 앞에 있는 데이터, 새로운 데이터, 나머지 데이터를 차례대로 합쳐주면 됩니다.

 


   2. Pandas 행 삭제하기

이번에는 행을 삭제해 보겠습니다. 예제 데이터를 만들어줄게요.

 

data = {
    '이름' : ['꽁냥이','옹냥이', '아이린'],
    '나이' : [22, 16, 26],
    '키' : [183, 181, 160]
}
df = pd.DataFrame(data) ## 데이터

 

 

행 삭제는 인덱스를 이용한 방법과 특정 칼럼의 값을 이용하는 방법을 소개하겠습니다.

1. 인덱스를 이용한 방법

데이터프레임에는 각 행마다 고유한 인덱스가 있습니다. drop함수에 삭제할 인덱스를 이용하여 행을 삭제할 수 있습니다. 이 때 axis는 0으로 지정해주세요. 꽁냥이는 인덱스가 1인 행을 삭제할거예요. 

 

df = df.drop(1,axis=0)

 

2. 특정 칼럼의 값을 이용한 방법

이번에는 이름이 '옹냥이'인 행을 삭제해보도록하겠습니다. query를 이용하여 이름이 옹냥이가 아닌 데이터들만 추출하면 됩니다.

 

df = df.query('이름 != "옹냥이"')

 

 

이번 포스팅에서는 데이터프레임에 행 데이터를 추가하고 삭제하는 방법에 대해서 알아보았습니다. 궁금하신 점 있으면 댓글로 남겨주세요~

 

지금까지 꽁냥이의 글 읽어주셔서 감사합니다.

 


댓글


맨 위로