我想以与此SO问题类似的方式对DataFrame进行排序: Sorting entire csv by frequency of occurence in one column
然而,我遇到的一个问题是计数不保证是唯一的,在这种情况下行将是交错的(我在上面的问题中使用EdChum建议的方法)
给出以下DataFrame:
cluster_id,distance,url
1,0.15,aaa.com
1,0.25,bbb.com
2,0.05,ccc.com
2,0.10,ccc.com
7,0.1,abc.com
7,0.2,def.com
7,0.3,xyz.com
我希望它成为:
cluster_id,distance,url
7,0.1,abc.com
7,0.2,def.com
7,0.3,xyz.com
1,0.15,aaa.com
1,0.25,bbb.com
2,0.05,ccc.com
2,0.10,ccc.com
请注意,按“cluster_id”的出现排序后,列cluster_id和距离仍然有序
答案 0 :(得分:2)
我们可以按cluster_id
和新列'G'排序:
df.assign(G=df.groupby('cluster_id').cluster_id.transform('count')).sort_values(['G','cluster_id'],ascending=[False,True]).drop('G',1)
Out[248]:
cluster_id distance url
4 7 0.10 abc.com
5 7 0.20 def.com
6 7 0.30 xyz.com
0 1 0.15 aaa.com
1 1 0.25 bbb.com
2 2 0.05 ccc.com
3 2 0.10 ccc.com