2017-01-03 1 views
0

Ich habe einen Datenrahmen bündeln kategoriale Variablen, jede Zeile entspricht einem Produkt. Ich wollte die Anzahl der Zeilen für jede Kombination von Attribut Ebenen und entschieden, um die zu laufen folgende:Anzahl der Zeilen für alle Kombinationen von Attribut Ebenen in Pandas

att1=list(frame_base.columns.values) 
f1=att.groupby(att1,as_index=False).size().rename('counts').to_frame() 

ATT1 wird die Liste aller Attribute, f1 scheint nicht den korrekten Wert als f1.counts.sum bereitzustellen() ist nicht gleich len (f1) vor der Gruppe von.Warum funktioniert das nicht?

+0

Glauben Sie stattdessen 'frame_base' -' att'? – jezrael

Antwort

1

Ein mögliches Problem ist NaN Reihe, aber vielleicht gibt es Tippfehler - Notwendigkeit att statt frame_base:

att = pd.DataFrame({'A':[1,1,3,np.nan], 
        'B':[1,1,6,np.nan], 
        'C':[2,2,9,np.nan], 
        'D':[1,1,5,np.nan], 
        'E':[1,1,6,np.nan], 
        'F':[1,1,3,np.nan]}) 

print (att) 
    A B C D E F 
0 1.0 1.0 2.0 1.0 1.0 1.0 
1 1.0 1.0 2.0 1.0 1.0 1.0 
2 3.0 6.0 9.0 5.0 6.0 3.0 
3 NaN NaN NaN NaN NaN NaN 

att1=list(att.columns.values) 
f1=att.groupby(att1).size().reset_index(name='counts') 
print (f1) 
    A B C D E F counts 
0 1.0 1.0 2.0 1.0 1.0 1.0  2 
1 3.0 6.0 9.0 5.0 6.0 3.0  1 
Verwandte Themen