2017-06-30 1 views
0

Ich würde gerne wissen, ob es möglich ist (und wenn es so ist), mehrere Dataframes aus einer binären Maske mit Pandas zu erhalten.Mehrere Dataframes (Segmente) mit einer binären Maske erhalten

Stellen Sie sich vor, dass ich die folgende Datenrahmen:

A B Mask 
0 0 1 0 
1 2 3 1 
2 4 5 1 
3 6 7 0 
4 8 9 1 
5 5 6 1 

ich ein dafaframe df1 erhalten möchten:

A B Mask 
1 2 3 1 
2 4 5 1 

und andere df2

A B Mask 
1 8 9 1 
2 5 6 1 

Ist dies möglich, ohne wiederkehrende Filter?

+0

Warum spalten Sie die Zeilen nach zwei Spielen? –

+0

Weil in der dritten Position der Maske eine 0 ist, bedeutet das, dass ich von dieser Position an einen neuen DataFrame erstellen muss. In der Tat, was ich versuche zu tun, ist die Segmentierung eines DataFrame basierend auf einer binären Maske – nunolourenco

Antwort

1

Eine Option:

[g[g.Mask != 0] for k, g in df.groupby((df.Mask == 0).cumsum()) if len(g) > 1] 

#[ A B Mask 
# 1 2 3  1 
# 2 4 5  1, 
# A B Mask 
# 4 8 9  1 
# 5 5 6  1] 
+1

Danke :) Ich versuchte mit Schleifen, aber die Lösung, die ich kam, war hässlich. Ich wusste, dass es eine einfache und elegante Lösung geben sollte. Vielen Dank! – nunolourenco

Verwandte Themen