2016-03-19 7 views
1

は、私のようなデータがあるとのpython、は、日付の並べ替えとランクを割り当てる -

user date 
1 3/18/2016 
1 1/11/2015 
1 1/11/2015 
1 5/8/2015 
1 7/8/2015 
2 3/17/2016 
2 2/10/2015 
2 9/8/2015 
2 1/1/2016 
2 1/1/2016 

私は、各ユーザーの日付に基づいて行をソートして、1-割り当てるのと新しい列を作成したいです日付ごとに5ランク。

次はtryings、各ユーザーの日付をソートするための

df.groupby(['user']).sort_values(['date'])です。しかし、ソート後にランク付けする新しい列を作成したい。

私の理想的な出力は次のようになり、

user date rank 
1 1/11/2015 1 
1 1/11/2015 1 
1 5/8/2015 2 
1 7/8/2015 3 
1 3/18/2016 4 
2 2/10/2015 1 
2 9/8/2015 2 
2 1/1/2016 3 
2 1/1/2016 3 
2 3/17/2016 4 

は、誰もがこれを行うに私を助けることができますか?おかげ

+0

あなたの期待出力に '1' == 'ユーザーのソートを説明してくださいだろうか? – MaxU

+0

間違った出力のお詫び...今すぐ変更しました – Observer

答えて

0

が、これは試してみてください。

In [274]: df['rank'] = df.sort_values(['user','date']) \ 
         .groupby(['user'])['date'] \ 
         .rank(method='min').astype(int) 


In [277]: df.sort_values(['user','date']) 
Out[277]: 
    user  date rank 
1  1 2015-01-11  1 
2  1 2015-01-11  1 
3  1 2015-05-08  3 
4  1 2015-07-08  4 
0  1 2016-03-18  5 
6  2 2015-02-10  1 
7  2 2015-09-08  2 
8  2 2016-01-01  3 
9  2 2016-01-01  3 
5  2 2016-03-17  5 
関連する問題