我有一个这样的数据框:
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
任何可能的衬垫?
答案 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