[Pandas] 데이터프레임 특정 문자열을 포함하는 모든 행 검색하기(str.contains)

seulzzang·2022년 12월 21일
0

서울 아파트 매매가를 예측하기 위해서 감성사전을 구축하려고 부동산 관련 영상의 유튜브 댓글을 크롤링했는데 유튜브 검색 내용에 주제와 관련 없는 영상들이 종종 들어가 있어서 특정 문자를 포함하지 않은 제목들을 지워주기 위해 찾아본 방법이다.

1. 특정 문자열을 포함하는 모든 행 인덱스 구하기

drop_index = df[df['column_name'].str.contains('str')].index 

이렇게 작성하면 str이라는 문자를 포함한 행들의 인덱스가 주르르륵 나온다!

new_df = df.drop(drop_index, axis=0)

이렇게 해주면 해당 인덱스들을 다 지워줄 수 있다.

2. 특정 문자열을 포함하지 않는 모든 행 인덱스 구하기

반대로 특정문자를 포함하지 않은 행들을 지우고 싶다면

drop_index = df[df['column_name'].str.contains('str')==False].index 

이렇게 해주거나

drop_index = df[df['column_name'].str.contains('str')].index 
new_df = df[~drop_index]

~(not) 연산자를 사용해서 반대로 떨궈줄 수 있다. 하지만 난 False를 쓰는 것이 더 직관적이라서 좋다😁

3. 여러 문자열을 포함하는/포함하지 않는 모든 행 인덱스 구하기

drop_index = comments_df[comments_df['title'].str.contains('서울|집|아파트|가격|값|부동산')==False].index

이런식으로 |(or) 연산자를 이용하면 된다.

제목에 서울, 집, 아파트, 가격, 값, 부동산 이라는 문자열만 들어가도록 필터링을 해줬다👍
근데 데이터 양이 반도 아니고 1/3로 줄었기 때문에 크롤링을 더 하던가 다른 방법을 모색해야할 것 같다 🥲

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글