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
반응형
'Study > Python' 카테고리의 다른 글
[Python]Sckit-Learn에 있는 데이터를 csv로 만들기 (0) | 2022.03.17 |
---|---|
[Python]Pycaret을 이용해서 타이타닉 머신러닝하기 (0) | 2022.02.28 |
Python groupyby 두가지 변수로 묶어서 정렬하기 (0) | 2021.12.01 |
폴더 속 모든 csv파일 하나의 dataframe으로 합치기 (0) | 2021.11.29 |
[Python]for문 돌리면서 루프마다 새로운 변수 선언하기 (0) | 2021.11.12 |