2016-06-14 5 views
0

ResultAccount 필드를 채우는 populateResult 함수가 있습니다. df3.AccounName2가 비어 있으면 df3 [ "ResultAccount"]는 df3.AccountName입니다. Else df3 [ "ResultAccount"]는 df3.AccountName2입니다.다른 조건이 팬더 데이터 프레임에 도달하지 않았습니다.

내 코드에서 elif 조건에 도달하지 못했습니다. if 조건 만 평가되고 ResultAccount가 채워집니다. 왜 다른 조건에 도달하지 않았는지 확실하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.

PopulateResult 기능 :

def populateResult(df3): 
if(df3.AccountName2.isnull): 
    return df3.AccountName 
elif(df3.AccountName.isnull): 
    return df3.AccountName2 

함수 호출 : 나는 당신이 두 번 numpy.where 필요가 있다고 생각

df3["ResultAccount"] = populateResult(df3) 
+0

그냥 df3.AccountName2.isnull로 사용하는 방법에 대한 수 있습니다() (당신이()을 잃어 버렸습니다. isnull은 하나의 함수이기 때문에 호출해야합니다) – Akshar

답변

0

:

df3["ResultAccount"] = np.where(df3.AccountName2.isnull(), 
           df3.AccountName, 
           np.where(df3.AccountName.isnull(), 
             df3.AccountName2, 
             'None')) 
print (df3) 
+0

항상 AccountName2를 제공합니다. ResultAccount는 항상 AccountName2 값입니다. – user3447653

+0

'df3.AccountName2.isnull()'을 반환하는 이유는 무엇입니까? – jezrael

+0

수정 된 답변을 확인하십시오. – jezrael

관련 문제