2016-07-14 6 views
2

ich keine Nullwerte in meinem Datenrahmen mit 1 und Nullwerten mit 0Pandas pd.isnull() Funktion

Hier ersetzen muß, ist mein Datenrahmen:

my_list= [['a','b','c'],['test1','test2',None],[None,'101','000']] 

mydf= pd.DataFrame(my_list,columns=['col1','col2','col3']) 

mydf 

    col1 col2 col3 
0  a  b  c 
1 test1 test2 None 
2 None 101 000 

mydf.where((pd.isnull(mydf)),0,inplace=True) 

mydf 

    col1 col2 col3 
0  0 0  0 
1  0 0 None 
2 None 0  0 

Ich bin nicht sicher, warum es ersetzt nicht null Werte durch null. pd.notnull() macht das Gegenteil. Kann mir jemand erklären, was ich hier vermisse?

Antwort

4

Just do:

mydf = mydf.notnull() * 1 
mydf 

enter image description here

Der Vollständigkeit

mydf.isnull() * 1 

enter image description here

+1

das ist schlau! – MaxU

+0

Sieht gut aus. Aber ich wollte wissen, warum pd.notnull das Gegenteil macht. Ist es ein Fehler? Das ist völlig irreführend! – Rtut

+3

@Rtut Könnte es eine Verwirrung über pd.isnull und pd.notnull geben? pd.notnull gibt True zurück, wenn der Wert NULL ist. – ayhan

2

Dies ist das erwartete Verhalten für where. Laut der Dokumentation, where behält Werte, die True sind und ersetzt Werte, die False sind, und pd.isnull wird True nur für die None Einträge zurück, weshalb sie die einzigen waren, die gehalten wurden.

Sie wollen entweder die mask Funktion mit pd.isnull verwenden:

mydf.mask(pd.isnull(mydf), 0, inplace=True) 

Oder Sie wollen where mit pd.notnull verwenden:

mydf.where(pd.notnull(mydf), 0, inplace=True) 

Egal, @ piRSquared Methode als einen der wahrscheinlich besser ist über.

+1

@Rtut, beantwortet diese Antwort Ihre Frage: 'Aber ich wollte wissen, warum pd.notnull das Gegenteil tut ' – MaxU

Verwandte Themen