将数据框的多行折叠为一行 - 基于唯一键

时间:2015-01-24 08:49:05

标签: python-2.7 pandas

我有一个数据框:

1 A1
1 A11
2 A2
2 A22
2 A23
3 A3
3 A33
4 A4
4 A44
4 A444
5 A5

我需要的是: -

1 |  A1, A11 
2 | A2, A22, A23
3 | A3, A33
4 | A4, A44, A444 
5 | A5 

即。每列可以有不同的行数。

无论如何,我可以优雅地折叠它们,而不使用dict的读数,然后根据需要连接到列表。在传统意义上,我需要在此处执行多个连接 - 任何方式?

请注意,最终列只有2个。

1 个答案:

答案 0 :(得分:1)

df =pd.DataFrame({'A':[1,1,1,2,2,3,3,3],    'B':['aaa','bbb','cc','gg','aaa','bbb','cc','gg']})

def f(x):
    return [x['B'].values]

df.groupby('A').apply(f)

在要减少的列上创建一个组,然后应用一个函数,该函数按每个组的列表返回组的结果。注意这会返回一个系列。

更新:将系列更改为数据框。

series =df.groupby('A').apply(f)
series.name = 'metric'
series.reset_index()