我有以下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)
连接本身可以工作,但是排序似乎不起作用。
有人可以帮助我解决这个问题吗?
亲切的问候。
答案 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列,然后将groupby
与import javafx.scene.control.TableColumn;
public class Main {
public static void main(String[] args) {
TableColumn column = null;
column.setOnEditCommit(event -> event.getTableView());
}
}
一起,然后将join
与A
列连接,最后将B
换成{每组{1}}:
groupby
如果需要元组,只需更改代码的第一部分:
dictionary