2017-10-30 6 views
0

파이썬 단위 테스트를 사용하면 팬더 DataFrame df의 열 이름이 목록의 열 이름과 일치하는지 어떻게 확인할 수 있습니까?팬 데스 DataFrame에 "assertTrue"단위 테스트를 적용 하시겠습니까?

import unittest 

column_names_list = ["col1","col2","col3"] 

assertTrue(df.columns in column_names_list) 

예를 들어,이 df에 대한 거짓 얻어야한다 :

col1 col2 col3 col4 
aasa 4546 5643 shsh 
... 
+1

'분류 (리스트 (SET (df.columns) 설정과 일치하지 (column_names_list))) == column_names_list'? – Wen

답변

1

당신이 그것을 당신은 또한 수 0

In [40]: assert len(set(df.columns) - set(['A', 'B', 'C'])) == 0 

In [41]: assert len(set(df.columns) - set(['A', 'B', 'D'])) == 0 
--------------------------------------------------------------------------- 
AssertionError       Traceback (most recent call last) 
----> 1 assert len(set(df.columns) - set(['A', 'B', 'D'])) == 0 
+0

이름을 확인합니까? 컬럼 수만 없습니까? – Dinosaurius

+0

'assert' 옆에'IndentationError : unexpected indent'가 생깁니다. 나는 파이썬 2.7을 사용한다. – Dinosaurius

+0

나는 또한 가비지 문자 또는 의도하지 않은 공간/탭을 소개해야합니다. 'set'에 관해서는, 여기 [https://docs.python.org/2/library/sets.html]에 대해 더 읽어보십시오. 'set'을 사용하여 두 열의 목록에 다른 요소가 없다는 것을 주장하는 단위 테스트를 작성할 수 있습니다. 순서는 중요하지 않습니다. 리스트는 해시 가능하지 않으므로 예제에서'in' 키워드를 사용할 수 없습니다. –

1

있어 두 목록 및 assert의 차이를 찾을 수 있습니다 set 사용 세트의 평등을 사용하십시오. (세트의 중괄호 사용) 어설 에러가 더 유용 할 수 있다는 방법 :

df = pd.DataFrame([], columns=['col1', 'col2', 'col3']) 
assert set(df.columns) == {'col1', 'col2', 'col3'} 

일치

df = pd.DataFrame([], columns=['col1', 'col2']) 
assert set(df.columns) == {'col1', 'col2', 'col3'}