Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对日期进行排序并分配排名-python_Python_Sorting - Fatal编程技术网

对日期进行排序并分配排名-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
的排序,好吗?对于错误的输出,我深表歉意。。。现在我改变了它