首页 > 解决方案 > 熊猫:在组内聚合之前排序

问题描述

我有以下熊猫数据框:

A        B         C
A        A         Test1
A        A         Test2
A        A         XYZ
A        B         BA
A        B         AB
B        A         AA

我想对这个数据集进行两次分组:首先由 A 和 B 连接 C 内的组,然后仅在 A 上获得仅由 A 列定义的组。结果如下所示:

A        A        Test1,Test2,XYZ
A        B        AB, BA
B        A        AA

最终结果应该是:

A        A,A:(Test1,Test2,XYZ), A,B:(AB, BA)
B        B,A:(AA)

连接本身有效,但排序似乎不起作用。

谁能帮我解决这个问题?

亲切的问候。

标签: pythonpandaspandas-groupby

解决方案


使用groupby+join

s1=df.groupby(['A','B']).C.apply(','.join)

s1
Out[421]: 
A  B
A  A    Test1,Test2,XYZ
   B              BA,AB
B  A                 AA
Name: C, dtype: object

s1.reset_index().groupby('A').apply(lambda x : x.set_index(['A','B'])['C'].to_dict())
Out[420]: 
A
A    {('A', 'A'): 'Test1,Test2,XYZ', ('A', 'B'): 'B...
B                                   {('B', 'A'): 'AA'}
dtype: object

推荐阅读