2017-08-01 2 views
2

Ich bin ziemlich neu in Python/Pandas und ich habe einen Datenrahmen, die etwa wie folgt aussieht:Pandas: Gruppe zwei Spalten basierend auf dem Wert in einer anderen Spalte

id   name  color 
id_1  alex  blue 
id_2  james  yellow 
id_1  sara  black 
id_4  dave  pink 
id_4  lin   grey 
id_2  aly   red 

ich von id gruppieren möchten und erhalten die Werte in den anderen beiden Spalten als Liste:

id   name    color 
id_1  [alex,sara]  [blue,black] 
id_2  [james,aly]  [yellow,red] 
id_4  [dave,lin]  [pink,grey] 

Gibt es eine einfache Möglichkeit, das zu tun?

+0

Mögliche Duplikat https://stackoverflow.com/questions/34776651/concatenate-rows-of-pandas-dataframe-with-same-id – piroot

Antwort

2

Verwenden groupby und agg durch benutzerdefinierte Funktion mit tolist:

df = df.groupby('id').agg(lambda x: x.tolist()) 
print (df) 
       name   color 
id        
id_1 [alex, sara] [blue, black] 
id_2 [james, aly] [yellow, red] 
id_4 [dave, lin] [pink, grey] 
+1

Perfekt, danke! +1 – Shushu

Verwandte Themen