2016-07-25 88 views
2

我想根據列X和Z將一個DataFrame分成N個數據框,它們在列中相同(彼此按列值)。將Python數據幀拆分爲多個數據框(其中所選行相同)

例如,該輸入:

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,所以如果您遍歷石斑魚並從每個元組中提取第二個元素,則可以獲得每個具有唯一組的數據幀列表:

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如果這回答了你的問題。不要忘記將它標記爲答案,thx。 – piRSquared

相關問題