2016-03-19 23 views
1

ben gibi veri var varsayalım piton,tarihleri ​​Sıralama ve bir dizi atanması -

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 

ben her kullanıcı için tarihlere dayalı satırları sıralamak ve daha sonra 1- atayın yeni bir sütun oluşturmak istiyorum Her tarih için 5 sıra.

aşağıdaki

her kullanıcı için tarihleri ​​sıralamak için

df.groupby(['user']).sort_values(['date']), denemelerine göre vardır. Ama sıraladıktan sonra sıralanacak yeni bir sütun oluşturmak istiyorum.

Benim ideal çıkış olacaktır

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 

kimse bunu bana yardımcı olabilir misiniz? Teşekkür

+0

Eğer beklenen çıktıda 1' == 'kullanıcı için sıralama açıklayabilir misiniz? – MaxU

+0

Yanlış çıktı için özür dilerim ... Şimdi değiştirdiniz – Observer

cevap

0

bu deneyin:

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 
İlgili konular