[問題] groupby 找出可能的值

作者: HerryL (Hollander)   2018-11-12 13:05:36
各位前輩好,
原始資料如 df
我想做的是,對 k1、k2 groupby 後,
依k1的順序把 k2 member 列出來(如 final_ans 的效果一樣)
底下是我目前想到的方法,可是因為要用 for loop,資料量一大就要很久,
請問,我有可能不透過 for loop 就可以求得 final_ans 醬的效果嗎?
謝謝大家 ^_^
>>> df=pd.DataFrame({
... 'k1':[1,1,1,1,2,2,2,3,3,3,3,3],
... 'k2':[1,2,3,2,2,2,1,2,2,1,4,3],
... 'v' :[4,5,6,5,4,6,5,4,5,6,7,8]})
>>> print(df)
k1 k2 v
0 1 1 4
1 1 2 5
2 1 3 6
3 1 2 5
4 2 2 4
5 2 2 6
6 2 1 5
7 3 2 4
8 3 2 5
9 3 1 6
10 3 4 7
11 3 3 8
>>> g=df.groupby(['k1','k2'])
>>> l=list( g.groups.keys() )
>>> df2=pd.DataFrame(l).rename(index=str,columns={0:'k1',1:'k2'})
>>> print(df2)
k1 k2
0 1 1
1 1 2
2 1 3
3 2 1
4 2 2
5 3 1
6 3 2
7 3 3
8 3 4
>>> df3=df2.groupby(['k1'])
>>>
>>> final_ans = list()
>>> for j in df3.indices:
... final_ans.append( list( df2.k2[ df3.indices[j] ] ))
...
>>> print( final_ans )
[[1, 2, 3], [1, 2], [1, 2, 3, 4]]

Links booklink

Contact Us: admin [ a t ] ucptt.com