对日期进行排序并分配排名-python
假设我有这样的数据对日期进行排序并分配排名-python,python,sorting,Python,Sorting,假设我有这样的数据 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个排名 以下是通过尝试 df.groupby(['user'])。排序值(['date'])用于对每个用户的
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个排名
以下是通过尝试
df.groupby(['user'])。排序值(['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
有人能帮我做这件事吗?谢谢试试这个:
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
请您解释一下预期输出中
user==1
的排序,好吗?对于错误的输出,我深表歉意。。。现在我改变了它