Ich versuche, einen Pandas Multiindex zu verwenden, um eine Teilscheibe am Index der höchsten Ebene (Datum) auszuwählen und eine Liste auf den Index der zweiten Ebene anzuwenden (Aktiensymbol). I.e. unten möchte ich die Daten für AAPL und MSFT im Bereich d1:d2
.So indexieren Sie mit einer Liste von Werten mit nur einem Label in einem Pandas MultiIndex
Die Teilscheibe funktioniert gut, es ist jedoch nicht klar, wie man sowohl AAPL als auch MSFT aus dem zweiten Index auswählt, während GOOG in der Mitte vermieden wird.
Wenn ich die Ebenen vertauschen, funktioniert es mit einem einzelnen Symbol, aber nicht mit einer Liste.
In [93]: print df
f1 f2 c1
date sym
2012-01-01 AAPL 5. 2 3
GOOG 1. 2 3
MSFT 4. 2 3
2012-01-02 AAPL 8. 2 3
GOOG 6. 2 3
MSFT 7. 2 3
2012-01-03 AAPL 11 2 3
GOOG 9. 2 3
MSFT 10 2 3
In [94]: print df.ix[d1:d2].swaplevel(0,1).ix['AAPL']
f1 f2 c1
date
2012-01-01 5 2 3
2012-01-02 8 2 3
In [95]: print df.ix[d1:d2].swaplevel(0,1).ix[['AAPL', 'MSFT']]
<blah balh>
TypeError: Expected tuple, got str
Ich möchte ein d.h lange Tupel Liste Gebäude vermeiden .:
t = [(d1, 'AAPL'), (d1, 'MSFT'), (d2, 'AAPL'), (d2, 'MSFT')]
die Arbeit macht, wenn bis ix weitergegeben. Unten ist meine gewünschte Ausgabe.
In [103]: print df.ix[t]
f1 f2 c1
date sym
2012-01-01 AAPL 5 2 3
MSFT 4 2 3
2012-01-02 AAPL 8 2 3
MSFT 7 2 3
Danke, John
Danke, ich war Pandas 7.0 verwenden, funktioniert dies in 7.2. –
Ja, das wurde zwischen 0.7.0 und 0.7.2 implementiert. –