2017-06-18 4 views
1

Das Folgende ist eine Untergruppe von Datenrahmen:Zuweisen Wert auf eine neue Spalte auf der Grundlage der Werte der anderen Spalten in Pandas

id words A B C D E 
1 new 1  1 
2 good 1 
3 star   1 
4 never     
5 final 

Ich möchte eine neue Variable (genannt FF) als eine neue definieren Spalte und weisen Sie 1 zu, wenn die Werte für alle anderen Variablen (Spalten) "null" sind. Der neue Datenrahmen würde so aussehen:

id words A B C D E FF 
1 new 1  1 
2 good 1 
3 star   1 
4 never      1     
5 final      1 

Wie kann ich es mit Python und Pandas tun? Vielen Dank.

Antwort

5

Sie können eine Funktion definieren, die reihenweise auf den Datenrahmen angewendet wird:

def fill_if_nan(row): 
    if row[['A', 'B', 'C', 'D', 'E']].isnull().all(): 
     return 1 

    return None 

df['FF'] = df.apply(fill_if_nan, axis=1) 

Oder eine elegantere numpy basierte Lösung:

df['FF'] = np.where(df[['A', 'B', 'C', 'D', 'E']].isnull().all(1), 1, np.nan) 
+0

Ihnen danken. Das Programm kann den Nullwert nicht erkennen. Für einige Zeilen sind alle Werte für die Variablen null, aber die FF-Variable hat keine "1". Ich denke, ich muss alle Leerzeichen auf Nullwerte ersetzen. Hast du eine Lösung dafür? – Mary

+0

Wenn Sie ein Leerzeichen durch 'nan' ersetzen wollen, können Sie' df.replace (r '\ s +', np.nan, regex = True) 'verwenden. Siehe hierzu [Frage] (https://stackoverflow.com/questions/13445241/erplacement-blank-values-white-space-with-nan-in-pandas). –

+0

Ich habe es versucht, aber es auch die colmns der Wörter mit Nullwerten ersetzen, wenn es mehrere Wörter in der Spalte gibt und es Raum zwischen ihnen gibt, wie ich außer der Spalte "Wort" sagen kann. – Mary

Verwandte Themen