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