我有这样一个数据帧:熊猫:行数为列值的基础上排序数据帧
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
任何可能的一个这样的衬垫?
我有这样一个数据帧:熊猫:行数为列值的基础上排序数据帧
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
任何可能的一个这样的衬垫?
您可以按照一个临时列(实际上,与单个列一个数据帧,因为排序系列可能会导致一些稳定岬问题)创建基于价值数以及指数对结果的原始数据帧:
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
感谢ton @ YS-L,它的工作原理.... –
您可以使用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
我从来没有用过熊猫,但是有可能做类似'df.reindex_axis(sorted(df.rows,key = some_function),axis = 0)'? (不,我不知道为什么我要回答一个我一无所知的问题)。 – Sam