기술스택을 쌓아보자/Python

특정 문자가 들어간 데이터프레임 열 이름 검색하기: df.filter()

소리331 2020. 9. 3. 11:30
반응형

 

 

나는 개발을 배운지 얼마되지 않아서, df로 표현될 수 있다면, 데이터프레임의 형태로 데이터를 다루는 것을 선호한다

(2D MATRIX의 강력함!)

 

 

그런데, 데이터 프레임이 점점 커지다보면,  열의 이름과 행의 위치를 정확히 기억할 수 없다. 이럴 때에는 데이터프레임 내의 열을 검색하는 메서드와 인덱싱하는 메서드가 크게 도움이 된다. 

 

 

import pandas as pd 

test = pd.DataFrame([
    [1, 2, 3, 4],
    [5, 6, 7, 8]
]
)
test.columns = ['a_a', 'b_b', 'c_a', 'd_b']

 

요렇게 샘플로 데이터프레임을 만들어 보았다. 이제 여기서 '_a'가 들어간 열을 추출해보자

 

test.filter(regex='_a')

간단!

 

이렇게, DataFrame.filter() 를 이용하면 원하는 열의 이름을 효율적으로 알 수 있다.

 

Subset the dataframe rows or columns according to the specified index labels.
-> 대충 열과 행 모두 filter할 수 있다는 뜻!

 

주의할 점은, 해당 메서드는 row와 col만 filter하지, 내부의 value는 filter 하지 못한다. 만약 특정 문자열이 담긴 데이터를 가져오고 싶다면 str.contains()를 참고하자!

 

행을 indexing 하고 싶을 때가 있을텐데, 그럴땐 단순히 숫자만 적는게 아니라, axis=0을 지정해주어야 한다! df.filter()의 axis 인자의 기본값은 None이기 때문에, 그냥 숫자만 넣으면 얘가 결과를 가져오지 못한다. 두 축의 영역이 겹치면 혼선이 온다! 라고 생각하면 감이 오실랑가

test.filter([0], axis=0)

 

참고

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.filter.ht

 

 

 

 


 

✔ 글이 도움이 되셨나요?

☺아래 광고를 눌러주시면 소리331이 더 좋은 퀄리티의 글을 연재하는데 큰 힘이 됩니다!☺

반응형