将数据框的多行折叠成一行 - 基于唯一键
Collapse mutiple rows of a dataframe into one row - based on a unique key
我有一个数据框:
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 列。
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)
在要减少的列上创建一个分组依据,然后应用一个函数,该函数 returns 分组的结果按每个组的列表排列。注意这个returns一个系列。
更新:将系列更改为数据框。
series =df.groupby('A').apply(f)
series.name = 'metric'
series.reset_index()
我有一个数据框:
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 列。
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)
在要减少的列上创建一个分组依据,然后应用一个函数,该函数 returns 分组的结果按每个组的列表排列。注意这个returns一个系列。
更新:将系列更改为数据框。
series =df.groupby('A').apply(f)
series.name = 'metric'
series.reset_index()