2017-12-01 14 views
0

2つの列から取得したユニークなペアに従ってパンダデータフレームを分割し、そのペアを基準にして行を選択して残りの列を投影したいとします。ユニークな列ペアごとにスライスデータフレーム

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

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