Python/Pandas

[Pandas] 파이썬 데이터프레임 값 변경/대체 방법 정리

jimmy_AI 2022. 5. 18. 19:15
반응형

파이썬 판다스 값 바꾸기, 수정 방법 예제

Pandas 라이브러리의 데이터프레임에서 원하는 부분의 값을 변경, 대체하는 여러 가지 방법들을

정리해보도록 하겠습니다.

 

이해를 돕기 위하여, 아래의 데이터프레임을 예시로 값이 대체된 결과를 보여드리겠습니다.

(앞의 코드 수행 결과에 누적된 변경 결과를 첨부할 예정이니 참고해주세요.)

import pandas as pd

a = {'A' : [1, 2, 3, 4, 5, 6], 'B' : [10, 20, 30, 40, 50, 60], 'C' : [100, 200, 300, 400, 500, 600]}
df = pd.DataFrame(a)
df

 

 

값 1개만 변경

가장 간단한 경우로 원하는 값 1개를 수정하는 예시를 먼저 살펴보겠습니다.

df.loc[행의 인덱스, 열 이름] = 바꿀 값 형태로 지정하면 됩니다.

 

여기서는 2번 인덱스를 가진 행의 A열 값을 바꿔보겠습니다.

df.loc[2, 'A'] = 3000

df

 

 

특정 열 통째로 변경

특정 컬럼 전체의 값을 바꾸고 싶은 경우에는

df['열 이름'] = 바꿀 값 리스트 형태로 코드를 작성해주시면 됩니다.

df['A'] = [1000, 2000, 3000, 4000, 5000, 6000]

df

 

 

특정 행 통째로 변경

이번에는 원하는 row 위치의 값들을 모두 바꾸고 싶은 경우입니다. 여기서는

df.loc[행의 인덱스] = 바꿀 값 리스트 형태로 지정해주시면 됩니다.

df.loc[2] = [0, 0, 0]

df

반응형

여러 행, 여러 열의 값 동시에 변경

다소 복잡할 수 있는 경우로, 여러 행/열의 값들을 동시에 대체하고 싶은 경우에는

df.loc[행의 인덱스 리스트, 열 이름 리스트] = 바꿀 값 형태로 지정해주시면 됩니다.

df.loc[[2, 4], ['A', 'C']] = 9999

df

 

 

조건에 해당하는 위치의 값 변경

만일, 특정 조건을 만족하는 위치에 해당하는 값들만 수정하고 싶다면

df.loc[조건, 바꿀 행] = 바꿀 값 형태로 코드를 작성해볼 수 있습니다.

 

A열의 값이 9999인 경우 해당 위치의 B열 값을 -500으로 변경하는 코드는 아래와 같습니다. 

df.loc[df['A'] == 9999, 'B'] = -500

df

 

 

replace 이용 특정 값 대체

특정 값들만을 골라 다른 값으로 대체하고 싶은 경우에는

판다스에서 제공하는 df.replace 메소드를 사용하면 편리합니다.

 

사용 방법은 df = df.replace(기존 값, 변경 값) 형태로 작성하면 되며,

특정 열 내에서만 값 대체를 하고싶다면 df = df.replace({'열 이름' : 기존 값}, 변경 값) 형태로

코드를 지정해주시면 됩니다.

df = df.replace(-500, 0)
# df = df.replace({'B' : -500}, 0) : 바꿀 값의 범위를 B열로만 한정

df