pandas multiindex - wie wählen Sie die zweite Ebene, wenn Sie mit Spalten?
Dumme Frage, aber ich kann wirklich nicht die Antwort zu finden.
Ich habe einen dataframe mit diesem index:
index = pd.MultiIndex.from_product([['stock1','stock2'...],['price','volume'...]])
Es ist eine nützliche Struktur für das tun zu können df['stock1']
, aber wie wähle ich alle Daten Preis? Ich kann nicht einen Sinn für die Dokumentation.
Ich habe versucht, die folgenden mit kein Glück: df[:,'price']
df[:]['price']
df.loc(axis=1)[:,'close']
df['price]
Wenn dieser index-Stil ist in der Regel vereinbart, eine schlechte Idee, aus welchem Grund auch immer, was wäre dann die bessere Wahl? Sollte ich gehen für ein multi-indexierte index für die Aktien, die als Etiketten auf die Zeit, die Serie anstatt in der Spalte Ebene?
Vielen Dank
BEARBEITEN - ich bin mit dem multiindex für die Spalten, nicht die index (der Wortlaut bekam das bessere von mir). Die Beispiele in der Dokumentation Fokus auf multi-level Indizes eher als Spalte Strukturen.
Wenn Sie daran interessiert sind, mehr über das schneiden und filtern multiindex DataFrames, werfen Sie bitte einen Blick auf meine post: Wie kann ich die Scheibe oder filter MultiIndex DataFrame Ebenen?.
InformationsquelleAutor AndyMoore | 2017-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutzen auch John - Daten Beispiel:
Mit
xs()
ist ein weiterer Weg, um eine ScheibeMultiIndex
:Alternativ, wenn Sie eine
MultiIndex
an Stelle der Spalten:df.xs('price',axis=1,level=1)
macht den job perfektGenial, froh zu helfen.
InformationsquelleAutor Andrew L
Mit @JohnZwinck die Daten der Probe:
Option 1:
Option 2:
Funktioniert, aber was ist das
slice()
Funktion zu tun? Der python-website war nicht hilfreich für mich. Sagte slice() gibt die Indizes. Kann ich etwas tun, wie die Liste(slice(...))? Anscheinend nicht.bitte überprüfen Sie diese Frage und Antworten - ich hoffe, das hilft...
InformationsquelleAutor MaxU
df.unstack()
wird, "reißen" die Letzte Stufe IhrerMultiIndex
und machen Sie Ihre DataFrame viel mehr konventionellen, mit einer Spalte pro Datentyp. Zum Beispiel:Gibt Sie:
InformationsquelleAutor John Zwinck
Habe ich auch bemerkt, die Sie verpasst haben diese option:
So weit als best practice für Ihre Zeit-Daten, bewahren Sie es in eine entsprechende Spalte, Zeilen, vorzugsweise als ein datetime-Objekt in Python (pandas hat built-in-Funktion unterstützen). Sie können die Maske syntax, um nur Zeiten relevant für Ihr Interesse.
Ist, wie Sie den Zugriff auf eine einzelne Spalte an Ihre Daten-frame. Aber für mehrere Spalten können wir übergeben eine Liste, oder einen Doppelpunkt zu bekommen alle:
Eine nützliche Methode, um die Abfrage (und schnell) ist die Verwendung von Masken, um anzugeben, welche Zeilen/Spalten treffen, was Bedingung, die Sie wollen:
Hoffe, dass dies hilft, und wie immer, fühlen Sie sich frei, um follow-up auf diese Antwort, wenn ich völlig falsch verstanden, deine Frage, ich würde gerne weiter helfen.
df.loc[:,"price"]
funktioniert nicht mit OP ' s index.verwenden Sie Daten-frame?
Ja, schau in meine Antwort hier für die genaue DataFrame ich bin mit.
InformationsquelleAutor bmc