Hi, here's a one line solution for you :)
import pandas as pd
import numpy as np # Optional
# if you only want to get the result, you can simply do:
df.groupby('k1').agg({'k2': 'unique'})
# if you want to sort the values:
df.groupby('k1').agg({'k2': 'unique'}).applymap(np.sort)
Hope this would help.
※ 引述《HerryL (Hollander)》之銘言:
: 各位前輩好,
: 原始資料如 df
: 我想做的是,對 k1、k2 groupby 後,
: 依k1的順序把 k2 member 列出來(如 final_ans 的效果一樣)
: 底下是我目前想到的方法,可是因為要用 for loop,資料量一大就要很久,
: 請問,我有可能不透過 for loop 就可以求得 final_ans 醬的效果嗎?
: 謝謝大家 ^_^
: ... '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]})
: 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
: 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
: ... final_ans.append( list( df2.k2[ df3.indices[j] ] ))
: ...
: [[1, 2, 3], [1, 2], [1, 2, 3, 4]]