2016-10-07 8 views
2

Ich habe folgende Daten-Set:Pandas Gruppe und Datensatz gruppiert Werte

Code Value 
100004 1 
1017 1 
1017 3 
1071 1 
1071 3 
3039 1 
3397 1 
3397 3 

konnte ich den Wert mit pandasDataFrame.groupby ('Code', as_index = False) zählen .agg ('count')

Ich möchte zählen und gleichzeitig die Werte in einer neuen Spalte aufzeichnen. Ich möchte, dass das Ergebnis wie folgt aussieht:

Code  NoValues  Values 
100004  1    1 
1017  2    1,3 
1071  2    1,3 
3039  1    1 
3397  2    1,3 

Kann ich das mit Pandas machen?

Antwort

1

können Sie verwenden groupby + agg:

df.Value.groupby(df.Code).agg({'Values': lambda g: list(g), 'NumValues': lambda g: len(g)}).reset_index() 

Zum Beispiel:

df = pd.DataFrame({'Code': [1004, 1004, 1007], 'Value': [1, 2, 8]}) 
>>> df.Value.groupby(df.Code).agg({'Values': lambda g: list(g), 'NumValues': lambda g: len(g)}).reset_index() 
    Code NumValues Values 
0 1004 2 [1, 2] 
1 1007 1 [3] 
+0

Danke @Ami Tavory, ist aber nicht das, was ich suche. In der Spalte Werte möchte ich als durch Komma getrennte Zeichenkette aufzeichnen, welche die gezählten Werte sind. Also, für Code 1004 habe ich eine Zählung von 2 und wird von 1 und 2 gebildet, also ist das Endergebnis 1004 2 (Anzahl der Werte) 1,2 (Werte, die gezählt wurden) –

+0

@IonutSandric Nicht, das ist OK - ich verstehe das jetzt. Es ist nur so, dass ich zuerst geantwortet habe und dann deine Frage formatiert habe. Warte eine Sekunde. –

+0

@IonutSandric Jetzt sehen. –

Verwandte Themen