본문 바로가기
프로그래밍/Python

[Python(파이썬)]각기 다른 Dataframe에서 동일 값이면 replace(변경)하기

by Mr.noobiest 2022. 9. 14.

Dataframe을  사용하여 데이터 전처리를  하다 보면, 기존 데이터를 수정해야 하는 상황이 많이 발생한다.

 

그중에서도 SQL Query문을 사용하듯이  특정 동작을 수행해야 하는 경우가 있는데,

 

 

 

 

 

 

 

예시 테이블과 같이 "Col_2"의 컬럼의 String 값들중 특정 문자들만  변경해주려고한다.

 

물론 그냥 직접

 

df['Col_2'].str.replace('U.S.A','US')

 

이런식으로 일일히 바꾸어도 시간이 걸린뿐 동일한 동작은 가능할 것이다.

 


하지만 만약에 위와 같은 국가의 갯수가  100개가 넘는다면?

그리고 같은 국가명인데 세부정보가 다른경우가 있다면?

ex) Japen  (English) / Japen (Franch)

 

만약, 나중에 추가되는 데이터의 국가명이 기존과 다르게 변경된다면?

U.S.A -> United States Of America

 

아주 골치가 아파질것이다.

 

이를 관리하기위해 아래와 같이 별도의 Dataframe을 만들었다고 하자.

 

 

 

 

 

 

방법은 간단하다.

 

 


1)

main=pd.read_csv('Sample_1.csv')

 

 

 

 

 

 

country_info=pd.read_csv('Country.csv')

 

 

 

 

 


2) 먼저 Dataframe을 Dict형식으로 변환해줘야한다.

country_info=country_info.set_index('Country').to_dict()
country_info=country_info['Subsidiary']

 

결과 -> { 'United Kingdom':'UK', 'U.S.A':'US',  'South Korea':'ROK', 'Japen':'JP' }

이때 Col_2에서 동일값을 찾기위한 String이 반드시 Key값으로

해당 Key값으로 변경후의 값  부분을 Value값으로 해야한다.


3) main['Col_2'] = main['Col_2'].replace(country_info, regex=True)

 

결과를 보면  다음과 같이 변경될 것이다.

 

결과 예시)

 

 

 

 

 

이를 활용하면 대용량 데이터 전처리시에도 간편하게 수정이 가능하고,

데이터 자체의 수정이 발생하여도 빠르게 적용이 가능하다.

728x90
반응형