Python 在一列中按引用对数据帧进行排序,同时在其他列中保持顺序
我想以与此问题类似的方式对数据帧进行排序: 然而,我遇到的一个问题是,计数不能保证是唯一的,在这种情况下,行将被交错(我使用EdChum在上述问题中建议的方法) 给定以下数据帧:Python 在一列中按引用对数据帧进行排序,同时在其他列中保持顺序,python,pandas,Python,Pandas,我想以与此问题类似的方式对数据帧进行排序: 然而,我遇到的一个问题是,计数不能保证是唯一的,在这种情况下,行将被交错(我使用EdChum在上述问题中建议的方法) 给定以下数据帧: 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,ur
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\u id和distance仍然按顺序排列,在按出现的“cluster\u id”排序后,我们可以按
cluster\u 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
我们可以按集群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
这是按任何列排序的吗?(哦,对不起,我读错了!)@JoseA。我不太明白你的意思。在排序后,我希望列cluster\u id和distance仍然是有序的,在按“cluster\u id”的出现进行排序后是的,很抱歉我错读了问题。是否在任何列中排序?(哦,对不起,我读错了!)@JoseA。我不太明白你的意思。在排序后,我希望列cluster\u id和distance仍然是有序的,在按“cluster\u id”的出现进行排序后是的,很抱歉我错读了问题。什么是新的列G?发生次数?@clwen此处G=df.groupby('cluster\u id')。cluster\u id.transform('count')
,发生次数是否稳定?我不太清楚。无论如何,我不知道这是OP的观点还是我(再次)误读了它。找到了另一种方式:-)G列是什么?发生次数?@clwen此处G=df.groupby('cluster\u id')。cluster\u id.transform('count')
,发生次数是否稳定?我不太清楚。无论如何,我不知道这是OP的观点还是我(再次)读错了。找到了另一种方式:-)