2016-05-21 3 views
1

Angenommen, ich habe einen Pandas-Datenrahmen, dessen Spalten ['a', 'b', 'c'] sind. Alle von ihnen sind von Typ Ganzzahlen. Ich möchte die Anzahl der eindeutigen Werte in der Spalte "b" finden, die jedem eindeutigen Wert in der Spalte "c" entspricht, und sie in einem neuen Datenrahmen speichern. Wie mache ich das mit Pandas? Ich habe so etwas versucht:Pandas - Effizienter Weg dafür?

new_df = pd.DataFrame() 
for value in df['c'].unique(): 
    x1 = df[df['c']==value] 
    x2 = x1['b'].unique().size 
    new_df.append({'A': x2, 'B': value}, ignore_index=True) 

aber es dauert zu viel Zeit. Gibt es einen effizienten Weg?

Antwort

3

Wenn ich richtig verstanden habe, sollte diese Arbeit:

df.groupby("c")["b"].nunique() 
+0

Dank, es funktioniert wie Magie! – user6365735

+0

Gern geschehen. :) – ayhan

0
df.groupby('c')['b'].value_counts() 
+0

Was es tut, ist für jedes eindeutige 'c', gibt die Zählung für jedes einzigartige 'b' zurück, während ich für jedes einzigartige 'c' will, gibt die Zahl des eindeutigen 'b' zurück – user6365735