2017-07-02 3 views
0

Im Datenrahmen unten wurde adam zweimal per E-Mail und einmal per Telefon kontaktiert. Wenn ich sum() verwende, um den gesamten E-Mail-Verbrauch zu zählen, bekomme ich das korrekte Ergebnis: 2. Aber wenn ich count() benutze, bekommt Adam 3. Warum passiert das? Unterscheidet .count() nicht zwischen True und False Booleans?Pandas Datenrahmen verwirrenden Unterschied zwischen .count und .sum

df = pd.DataFrame ({'Name':['adam','ben','adam','adam','ben'], 'Type' ['Email', 'Phone', 'Email','Phone','Phone']}, index =[0,1,2,3,4]) 

df.groupby('Name')['Type'].apply(lambda x: x.isin(['Email']).sum()) 
df.groupby('Name')['Type'].apply(lambda x: x.isin(['Email']).count()) 

Antwort

2

Die technische Definition der count Methode ist, die nicht-fehlende Werte zu zählen. Da alle Ihre Werte nicht fehlen, wird einfach die Anzahl der Zeilen für jede Gruppe zurückgegeben.

+0

Danke Ted. Ich habe auf pydata.org gesehen, dass Count eine Reihe mit einer Anzahl von Nicht-NA/Null-Beobachtungen zurückgibt. Ich wusste nicht, dass das nicht fehlende Werte bedeutet. Vielen Dank. –

Verwandte Themen