2016-06-14 10 views
0

私は、次のデータフレームにcreditをソートするために行うことsort_valuesを使用することです()関数(私も(ソートしようとした)):pandasデータフレームを非字句に並べ替える方法は?

df.sort_values('credit', ascending=False, inplace=True) 

問題は、クレジットは以下のようにソートされているということです

   i credit   m reg_date   b  id 
---------------------------------------------------------------------- 
238    0 4600000.00  0 2014-04-14  False 102214 
127    0 4600000.00  0 2014-12-30  False 159479 
13    0 16800000.00  0 2015-01-12  False 163503 
248    0 16720000.00  0 2012-11-11  False 5116 

昇順はFalseだからこそ、4600000.00は他のクレジットの前です。しかし、これは私が望んでいたものではありません。私は値に基づいてソートしたいと思っていました。したがって、上記のサンプルでは、​​16800000.0016720000.004600000.00より前である必要があります。このデータフレームを非字句にソートする方法は?

EDIT-1:
データはそれ以上で、含めることができます

120    0 16708000.00  0 2013-12-17  False 51433 
248    0 16720000.00  0 2012-11-11  False 5116 
13    0 16800000.00  0 2015-01-12  False 163503 
21    0 4634000.00  0 2014-12-29  False 159239 
136    0 4650000.00  0 2012-11-07  False 4701 
..   ...   ...  ...   ...  ...  ... 
231    0 7715000.00  0 2014-02-15  False 83936 
182    0 7750000.00  0 2015-07-13  False 201584 

答えて

1

あなたがタイプfloatとして個別に列をソートして、元のインデックスに

をスライスするためにインデックスを使用することができますあなたの場合:

import pandas as pd 
from StringIO import StringIO 

text = """136    0 4650000.00  0 2012-11-07  False 4701 
231    0 7715000.00  0 2014-02-15  False 83936 
13    0 16800000.00  0 2015-01-12  False 163503 
120    0 16708000.00  0 2013-12-17  False 51433 
248    0 16720000.00  0 2012-11-11  False 5116 
21    0 4634000.00  0 2014-12-29  False 159239 
182    0 7750000.00  0 2015-07-13  False 201584 
""" 

df = pd.read_csv(StringIO(text), delim_whitespace=True, 
       header=None, index_col=0, 
       names=['i', 'credit', 'm', 'reg_date', 'b', 'id']) 

print df.loc[df.credit.astype(float).sort_values(ascending=False).index] 

    i  credit m reg_date  b  id 
13 0 16800000.0 0 2015-01-12 False 163503 
248 0 16720000.0 0 2012-11-11 False 5116 
120 0 16708000.0 0 2013-12-17 False 51433 
182 0 7750000.0 0 2015-07-13 False 201584 
231 0 7715000.0 0 2014-02-15 False 83936 
136 0 4650000.0 0 2012-11-07 False 4701 
21 0 4634000.0 0 2014-12-29 False 159239 
+0

編集済みの記事を参照してください。 – piRSquared

+0

問題はカラムのタイプですか?私は正しい? – ALH

+1

ほぼ確実 – piRSquared

関連する問題