2 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個贊
像這樣的東西也可以工作:
In [2468]: df.value2 = df['value2'].apply(str)
In [2494]: res = df.groupby('value1')['value2'].apply(lambda x:','.join(x)).reset_index()
In [2498]: res['count'] = df.groupby('value1').size().reset_index()[0]
In [2499]: res
Out[2499]:
value1 value2 count
0 1 1,4,5 3
1 2 3,1 2

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個贊
使用aggwithjoin和聚合size,但有必要將列轉(zhuǎn)換為字符串:
tups = [('value2', lambda x: ','.join(x.astype(str))), ('count', 'size')]
df1 = df.groupby('value1')['value2'].agg(tups).reset_index()
print (df1)
value1 value2 count
0 1 1,4,5 3
1 2 3,1 2
選擇:
tups = [('value2', ','.join), ('count', 'size')]
df1 = df['value2'].astype(str).groupby(df['value1']).agg(tups).reset_index()
添加回答
舉報(bào)