熊猫:在分组之前先排序

时间:2018-08-09 15:37:59

标签: python pandas pandas-groupby

我有以下Pandas数据框:

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)

连接本身可以工作,但是排序似乎不起作用。

有人可以帮助我解决这个问题吗?

亲切的问候。

2 个答案:

答案 0 :(得分:3)

使用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

答案 1 :(得分:1)

先将sort_values乘以3列,然后将groupbyimport javafx.scene.control.TableColumn; public class Main { public static void main(String[] args) { TableColumn column = null; column.setOnEditCommit(event -> event.getTableView()); } } 一起,然后将joinA列连接,最后将B换成{每组{1}}:

groupby

如果需要元组,只需更改代码的第一部分:

dictionary