2016-07-25 6 views
2

私は1つのDataFrameをXとZの列に基づいてN個のデータフレームに分割したいと思います。例えば複数のデータフレームに分割する(選択した行は同じです)

、この入力:

df = 
    NAME X Y Z Other 
0 a 1 1 1 1 
1 b 1 1 2 2 
2 c 1 2 1 3 
3 d 1 2 2 4 
4 e 1 1 1 5 
5 f 2 1 2 6 
6 g 2 2 1 7 
7 h 2 2 2 8 
8 i 2 1 1 9 
9 j 2 1 2 0 

この出力だろう:

df_group_0 = 
    NAME X Y Z Other 
0 a 1 1 1 1 
2 c 1 2 1 3 
4 e 1 1 1 5 

df_group_1 = 
    NAME X Y Z Other 
1 b 1 1 2 2 
3 d 1 2 2 4 

df_group_2 = 
    NAME X Y Z Other 
6 g 2 2 1 7 
8 i 2 1 1 9 

df_group_3 = 
    NAME X Y Z Other 
7 h 2 2 2 8 
9 j 2 1 2 0 

これは可能ですか?

答えて

3

groupbyは、最初の要素とのタプルのイテレータがグループIDである生成する、だから、ハタを反復し、各タプルから2番目の要素を抽出する場合は、それぞれが固有のグループを有するデータフレームのリストを取得することができる。

grouper = [g[1] for g in df.groupby(['X', 'Z'])] 

grouper[0] 
NAME X Y Z Other 
0 a 1 1 1 1 
2 c 1 2 1 3 
4 e 1 1 1 5 

grouper[1] 
NAME X Y Z Other 
1 b 1 1 2 2 
3 d 1 2 2 4 

grouper[2] 
NAME X Y Z Other 
6 g 2 2 1 7 
8 i 2 1 1 9 

grouper[3] 
NAME X Y Z Other 
5 f 2 1 2 6 
7 h 2 2 2 8 
9 j 2 1 2 0 
+1

私は逃したNAME 5も捕まえました。これがあなたの質問に答えた場合は – user2921352

+2

@ user2921352ありがとうございます。答えとしてマークすることを忘れないでください。 – piRSquared

関連する問題