Pandas:根据列值的行数对数据帧进行排序

时间:2015-07-10 07:16:07

标签: python pandas

我有一个这样的数据框:

a    b
1    2
3    2
2    3
6    3
7    3
5    4

我想根据b值的行数对此数据帧进行排序 输出:

a    b
2    3
6    3
7    3
1    2
3    2
5    4

任何可能的衬垫?

2 个答案:

答案 0 :(得分:1)

您可以对基于值计数创建的临时列(实际上是具有单个列的DataFrame,因为排序系列可能会导致一些稳定性问题)进行排序,并在结果上索引原始DataFrame:

print df.loc[df[['b']].replace(df.b.value_counts().to_dict()).sort('b', ascending=False).index]

输出:

   a  b
2  2  3
3  6  3
4  7  3
0  1  2
1  3  2
5  5  4

答案 1 :(得分:1)

您可以使用groupby:

import pandas as pd    
df = pd.DataFrame({'a':[1,3,2,6,7,5], 'b':[2,2,3,3,3,4]})
df.ix[df.groupby('b')[['b']].transform(len).sort('b', ascending=[0]).index]
    a   b
2   2   3
3   6   3
4   7   3
0   1   2
1   3   2
5   5   4