2016-04-16 15 views
0

パンダのデータフレームは列の値で並べ替えることができますが、データフレームに追加したくない系列の値でデータフレームを並べ替える必要がありましたそれは同じインデックスを持っています。パンダのデータフレームを系列で並べ替える

シリーズをデータフレームに(列として)追加し、列を並べ替えて並べ替え、並べ替えを行ってデータフレームをソートしました。サンプルコードでnprojnpercent私のデータフレームがあるとtotalは私のシリーズです:

nprojnpercent["total"]=total 
nprojnpercent.sort_values(by="total",ascending=False,inplace=True) 
nprojnpercent.pop("total") 

それは動作しますが、それは私には非常に奇妙なようです。シリーズでデータフレームを注文する簡単な方法はありますか?

答えて

0

sort_valuesはソートされた系列を返します。したがって、インデックスを取ってidxとします。 sのインデックスはdfのインデックスに対応しているため、とidxを使用して並べ替えられた値に基づいて行を並べ替えることができます。

np.random.seed(0) 
df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC')) 
s = pd.Series(np.random.randn(5), name='C') 

>>> df 
      A   B   C 
0 1.764052 0.400157 0.978738 
1 2.240893 1.867558 -0.977278 
2 0.950088 -0.151357 -0.103219 
3 0.410599 0.144044 1.454274 
4 0.761038 0.121675 0.443863 

>>> s 
0 0.333674 
1 1.494079 
2 -0.205158 
3 0.313068 
4 -0.854096 
Name: C, dtype: float64 

idx = s.sort_values().index 

>>> df.loc[idx] 
      A   B   C 
4 0.761038 0.121675 0.443863 
2 0.950088 -0.151357 -0.103219 
3 0.410599 0.144044 1.454274 
0 1.764052 0.400157 0.978738 
1 2.240893 1.867558 -0.977278 
関連する問題