2016-06-14 12 views
0

Ich habe eine populateResult Funktion, die das Feld ResultAccount füllt. Wenn df3.AccounName2 leer ist, ist df3 ["ResultAccount"] df3.AccountName. Sonst df3 ["ResultAccount"] ist df3.AccountName2.Else Zustand nie erreicht in Pandas Datenrahmen

In meinem Code wird dieser Elif-Zustand nie erreicht. Nur die if-Bedingung wird ausgewertet und füllt den ResultAccount auf. Nicht sicher, warum der Zustand sonst nie erreicht wird. Jede Hilfe wäre willkommen.

PopulateResult Funktion:

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

Funktionsaufruf:

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

Es könnte nur etwa sein, sie als df3.AccountName2.isnull() (Sie vermissen die(). Isnull ist eine Funktion und muss als eine aufgerufen werden) – Akshar

Antwort

0

Ich glaube, Sie brauchen doppelt numpy.where:

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

Es gibt immer den AccountName2. ResultAccount ist immer der AccountName2-Wert. – user3447653

+0

Was gibt 'df3.AccountName2.isnull()' zurück? – jezrael

+0

überprüfen Sie bitte die bearbeitete Antwort. – jezrael