2017-01-19 3 views
1

여기 팬더 데이터 프레임에서 시리즈를 검색하는 코드가 있습니다.Python Pandas 데이터 프레임 검색

    df[(df['SlyWeekofFiscalYear']==wk) & 
         (df['IB']==bnd) & 
         (df['slyfiscalyear']==yr)] 
        ['Wholesale'].sum() 

그것은 kwarg bnd=None를 전달하는 기능에있다. bnd=None 경우 두 번째 코드 줄을 무시할 수있는 방법이 있습니까?

현재 긴 if 문이 있지만 가능한 경우 코드를 정리하고 싶습니다.

답변

1

두 번째 줄을 항상인 것으로 바꾸려고 했습니까? bnd=None?

는 Somelike : 첫 번째 조건에 해당하는 경우

((df['IB']==bnd) | (bnd is None)) 
+0

완벽 - 귀하의 제안을 사용했습니다. 너무 단순하지만 아직 나를 피했다! – RichWolff

+1

항상 true를 반환하고 기본적으로 첫 번째 문을 무시합니다. –

+1

당신 말이 맞아. 나는 그것을 빨리 이해했다! – RichWolff

1

당신은 삼항 문을 시도 할 수 :

(df['IB'] == bnd if bnd is not None else True) 

True이 올바른 길이의 벡터에 제대로 방송한다 스칼라.

2

두 번째 줄을 ((bnd is None) | (df['IB'] == bnd))으로 변경할 수 있습니다. bnd이 None이면 모든 true Series가 생성되고 연산자가 &이므로 결과에 아무런 영향을 미치지 않습니다.

+0

두 번째 부울 벡터는 평가 될 것인가? – IanS

+1

@IanS 일반적으로'or' 또는'and'와는 다릅니다. '|'와'&'는 단락이 없습니다. 하지만 지금은 문서를 찾을 수 없습니다. – Psidom

+1

그것이 내가 의심하는 바입니다. 귀하의 단어로 충분합니다 :) – IanS

관련 문제