2017-06-30 6 views
0

パンダを使用してバイナリマスクから複数のデータフレームを取得することが可能かどうか(もしそうなら)。私は1 dafaframeのDF1取得したいバイナリマスクを使用して複数のデータフレーム(セグメント)を取得する

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 

私は、次のデータフレーム持っていることを想像し

A B Mask 
1 2 3 1 
2 4 5 1 

と別のDF2

A B Mask 
1 8 9 1 
2 5 6 1 

することに再発することなく、このことが可能ですフィルタ?

+0

あなたは2つの試合の後に行を分割しないのはなぜ? –

+0

マスクの3番目の位置に0があるので、その位置から上に、新しいDataFrameを作成する必要があることを意味します。実際には、私がやろうとしているのはバイナリマスクに基づくDataFrameのセグメント化です – nunolourenco

答えて

1

一つのオプション:

[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

ありがとう:)私はループを試しましたが、私が思いついた解決策は醜いものでした。私はシンプルでエレガントな解決策があるはずであることを知っていました。ありがとう! – nunolourenco

関連する問題