Toy BeispielAuswählen von Teilmenge von Multiindex Ebene
Angenommen habe ich die Datenrahmen df
unten gezeigt
C
L0 L1 L2
0 w P 11
Q 9
R 21
S 4
x P 3
Q 0
R 23
S 20
y P 19
Q 0
R 7
S 13
z P 17
Q 0
R 5
S 1
1 w P 8
Q 2
R 12
S 0
x P 22
Q 14
R 2
S 18
y P 6
Q 0
R 16
S 15
z P 10
Q 0
R 8
S 0
Beachten Sie, dass die Reihen der df
von 3-stufigen Multiindex indiziert sind.
ich das Minimum der C
Spalte für jeden Wert des L2
Ebene finden, wie folgt:
In [58]: df.groupby(level='L2').min()
Out[58]:
C
L2
P 3
Q 0
R 2
S 0
In ähnlicher Weise zeigt der folgende Ausdruck die Werte von L2
, für die diese Mindest größer als 0 ist:
In [59]: df.groupby(level='L2').min() > 0
Out[59]:
C
L2
P True
Q False
R True
S False
Frage: Wie kann ich die Zeilen des ursprünglichen Datenrahmen df
entsprechend den Werten o f L2
für die das Minimum von C
größer als 0 ist?
In diesem einfachen Beispiel ist das Problem der Auswahl der Reihen von df
L2
dessen Wert entweder 'P'
oder 'R'
läuft darauf hinaus. Daher wäre es nicht schwierig, das Problem durch eine Verkettung der Zeilen für L2='P'
mit denen für L2='R'
zu erzwingen.
In der Anwendung, die ich im Sinn haben, aber eine solche Lösung wird unhandlich, da hier die L2
Ebene hat ~ 2000 Werte und für etwa die Hälfte von ihnen, die mindestens größer als 0
Daher ist, Ich suche nach einer besser skalierbaren Möglichkeit, dieses Auswahlproblem zu lösen.
DATA
L0 L1 L2 C
0 w P 11
0 w Q 9
0 w R 21
0 w S 4
0 x P 3
0 x Q 0
0 x R 23
0 x S 20
0 y P 19
0 y Q 0
0 y R 7
0 y S 13
0 z P 17
0 z Q 0
0 z R 5
0 z S 1
1 w P 8
1 w Q 2
1 w R 12
1 w S 0
1 x P 22
1 x Q 14
1 x R 2
1 x S 18
1 y P 6
1 y Q 0
1 y R 16
1 y S 15
1 z P 10
1 z Q 0
1 z R 8
1 z S 0
Dank! BTW, 'm.loc [m.C,:]' (anstelle von 'm [m]') vermeidet das 'dropna'. – kjo
Und, realisierte, dass Sie 'm' nicht brauchen können, 'Transformieren Sie Methode verwendend. – Zero