为每对唯一列切片数据帧

时间:2017-12-01 20:17:18

标签: python pandas

我想根据两列中的唯一对分割pandas数据帧,然后选择相对于该对的行并投影剩余的列。

df: Col1  Col2  Col3  Col4
      1     1     a    100
      1     2     b    200 
      1     2     c    300
      1     2     d    400
      3     4     e    500
      3     4     f    600

然后

idxs = (...df...) # expression on df
for idx in idxs:
    print(idx)
    group = (...df...) # expression on df
    print(group)

应该产生类似

的东西
(1,1)
Col3  Col4
  a    100

(1,2)
Col3  Col4
  b    200
  c    300
  d    400

(1,3)
Col3  Col4
  e    500
  f    600

选择和投影部分看似简单,但获得独特的配对并不容易。我怎样才能合理有效地实现这一目标?

1 个答案:

答案 0 :(得分:1)

使用groupby

for x,y in df.groupby(['Col1','Col2']):

    print(x)
    print(y)


(1, 1)
   Col1  Col2 Col3  Col4
0     1     1    a   100
(1, 2)
   Col1  Col2 Col3  Col4
1     1     2    b   200
2     1     2    c   300
3     1     2    d   400
(3, 4)
   Col1  Col2 Col3  Col4
4     3     4    e   500
5     3     4    f   600