将Python Dataframe拆分为多个Dataframe(选择的行相同)

时间:2016-07-25 16:17:37

标签: python pandas grouping

我想根据列X和Z将一个DataFrame拆分为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

这可能吗?

1 个答案:

答案 0 :(得分:3)

groupby生成元组的迭代器,第一个元素是组ID,所以如果你遍历groupers并从每个元组中提取第二个元素,你就可以得到一个数据框列表,每个元素都有一个唯一的小组:

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