我有這樣一個數據幀:熊貓:行數爲列值的基礎上排序數據幀
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