[問題] groupby 找出可能的值

看板Python作者 (Hollander)時間5年前 (2018/11/12 13:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
各位前輩好, 原始資料如 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]] -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.97.16.132 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1541999138.A.2AB.html
文章代碼(AID): #1RwGeYAh (Python)
文章代碼(AID): #1RwGeYAh (Python)