2016-07-20 13 views
1

Ich bin mit diesem fest. Ich möchte eine Liste von name aus dem folgenden bekommen, aufgrund der groupby().mean() mit der Anwendung von Pandas Datenrahmen. Genauer gesagt möchte ich ["John", "Mary", "Suzan", "Eric"] bekommen.Wie bekomme ich eine Liste von Indexwerten nach groupby(). Mean() in Pandas?

 score 
name  
John 85.0 
Mary 86.5 
Suzan 90.0 
Eric 100.0 

Das Ergebnis der oben ist means, die aus der folgenden kommt:

data = pandas.DataFrame({"name": names, "score": scores}) 
means = data.groupby("name").mean() 

Ich habe means Wie jetzt, würde ich eine Liste mit Namen von 'means' - ["John", "Mary", "Suzan", "Eric"] erhalten möchte. Ist das erreichbar?

Antwort

4

am Index Schauen Sie, wenn Sie einen Index haben. Wenn Sie einen MultiIndex haben, lesen Sie die Antwort von @ jezrael mit get_level_values.

means.index.tolist() 
+0

Vielen Dank. – achimneyswallow

+0

Gern geschehen :) – Alex

1

können Sie verwenden:

print (list(means.index)) 
['John', 'Mary', 'Suzan', 'Eric'] 

Eine andere bessere Lösung ist Series.unique verwenden und lassen groupby:

print (data.name.unique()) 
['John' 'Mary' 'Suzan' 'Eric'] 
+0

Danke. Dies ist auch elegant. – achimneyswallow

+0

Lösung mit 'unique()' ist nicht besser für Sie? – jezrael

+0

Es ist großartig, aber meine Aufgabe ist es, Mittel zu picken und es in eine andere Datei für weitere Manipulation zu laden. unique() ist absolut besser, wenn ich nicht zum Beizen beauftragt bin :) Vielen Dank für Ihre Hilfe :) – achimneyswallow