Study/Python

[Python]DataFrame 특정 행에서 원하는 정보만 골라내기

SigmoidFunction 2021. 11. 12. 11:36
728x90

데이터 전처리를 하다보면 하나의 행에서 원하는 값만 뽑아내고 싶을 때가 있다.

대충 예시를 위해 만들어본 csv파일

 

여기서 1번컬럼에서 J가 들어가는 것들만 뽑아내고 싶다고 한다면?

 

import pandas as pd

df = pd.read_csv('test.csv', encoding='cp949')

j_df = df[df['1번컬럼'].str.contains('J')]

# j_df = df[df['1번컬럼'].str.contains('J', na=False)] << 해당 컬럼에 null값이 있을경우

encoding='cp949'는 한글나오게 인코딩

 

 

 

이런 식의 결과가 나온다.

 

 

두번째로 2번컬럼이 년,월,일로 정해져있는데 년,월으로만 표기하고 싶을 때는 100으로 나눠서 몫만 보면되는데 전체 데이터프레임을 적용할 때 코딩 초보자는 for문을 사용해야하나 while문을 사용해나 싶다. 내가 그랬다.

 

그런데 map과 lambda를 이용하면 아주 빠르고 간단하게 처리가 된다.

 

 여기서

 

df['2번컬럼'] = df['2번컬럼'].map(lambda x:x//100)

x를 100을 나눈 몫을 x로 전개해버린다는 느낌?

 

 

 

 

코딩 후 컬럼은 이렇게 정리된다.

 

마지막으로

 

3번컬럼에서 '미드'에 해당하는 것만 알고 싶다면?

 

df[df['3번컬럼'] == '미드']

DataFrame속의 특정컬럼이 '미드'인것만 출력

 

 

위에서 했던 것들을 모두 응용하면

 

1번 컬럼에서 J가 포함된 것들 중에서 3번컬럼에서 '미드'인 것을 출력하고자 한다면

 

j_df = df[df['1번컬럼'].str.contains('J')]


newj_df = j_df[j_df['3번컬럼'] == '미드']

이렇게 예쁘게 나온다.

728x90