2013-08-06 5 views
8

eine importierte CSV-Datei, indizierte ich den Datenrahmen so ...mit set_index Arbeiten in Pandas Dataframe

rdata.set_index(['race_date', 'track_code', 'race_number', 'horse_name']) 

Dies ist, was ein Teil des Datenrahmen sieht aus wie ...

race_date track_code race_number horse_name   work_date work_track 
2007-08-24 BM   8   Count Me Twice  2007-05-31   PLN 
            Count Me Twice  2007-06-09   PLN 
            Count Me Twice  2007-06-16   PLN 
            Count Me Twice  2007-06-23   PLN 
            Count Me Twice  2007-08-05   PLN 
            Judge's Choice  2007-06-07   BM 
            Judge's Choice  2007-06-14   BM 
            Judge's Choice  2007-07-08   BM 
            Judge's Choice  2007-08-18   BM 

Warum wird die Spalte "horse_name" nicht wie Datum, Strecke und Rennen gruppiert? Vielleicht ist es von Entwurf, wie kann ich diesen größeren DataFrame nach dem Rennen zerlegen, um einen neuen DataFrame mit 'horse_name' als Index zu haben?

+0

sieht wie ein Fehler aus, der richtige Ort für Fehlerberichte ist [auf github] (https://github.com/pydata/pandas/issues) :) Gut zu finden! –

+1

Diese Frage scheint off-topic zu sein, da es sich um einen Fehlerbericht handelt. –

Antwort

10

Es ist kein Fehler. Genau so soll es funktionieren.

DataFrame muss jedes einzelne Element in seinen Daten anzeigen. Wenn also der Index eine Ebene hat, wird diese Ebene vollständig erweitert. Wenn es zwei Ebenen hat, wird die erste Ebene gruppiert und die zweite Ebene wird vollständig erweitert. Wenn sie Ebenen hat, werden die ersten zwei gruppiert und die dritte Ebene wird erweitert.

Deshalb ist der Name des Pferdes nicht gruppiert. Wie würden Sie in der Lage sein, alle Elemente in der Datenrahmen, um zu sehen, wenn Sie Gruppe auch vom Pferd Namen :)

Versuchen Sie,:

rdata.set_index(['race_date', 'track_code', 'race_number']) 

oder:

rdata.set_index(['race_date', 'track_code']) 

Sie werden sehen, dass die letzte Ebene des Index immer vollständig erweitert ist, damit Sie alle Elemente im Datenrahmen sehen können.

+0

Das hat funktioniert. Vielen Dank! – TravisVOX