2017-02-24 3 views
1

는 파이썬파이썬 DataFrame GROUPBY

A B  C  D E 
0 foo one 0.46 -0.86 
1 bar one -0.28 -2.10 
2 foo two -1.50 -0.49 
3 bar three -1.13 1.07 
4 foo two 1.21 0.72 
5 bar two -0.17 -0.70 
6 foo one 0.11 -1.03 
7 foo three -1.04 0.27 

의 데이터 세트를하고 난 원래 데이터 세트가 '내가 돈 행 만이이

A B   C    D    E 
0 foo [one,two,two] [.46,-1.50,1.2] [-.86,-.49,.72] 
1 bar [one,three,two] [-.28,-1.13,-.17] [-2.1,1.07,-.70] 

같은 구조로 변환 할 for 루프를 시도하고 싶지 않습니다. 그것은 groupby를 사용하여 가능합니까? 또는 기존 기능?

답변

1

이 시도 :

f = lambda x: x.tolist() 
df1 = df.groupby('B').agg({'C':f,'D':f,'E':f}) 
print(df1) 

출력 :

       C         E \ 
B                  
bar   [one, three, two]     [-2.1, 1.07, -0.7] 
foo [one, two, two, one, three] [-0.86, -0.49, 0.72, -1.03, 0.27] 

            D 
B          
bar   [-0.28, -1.13, -0.17] 
foo [0.46, -1.5, 1.21, 0.11, -1.04]