python - 对日期进行排序并分配排名 - python

标签 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']).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

有人可以帮我做这件事吗?谢谢

最佳答案

试试这个:

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

关于python - 对日期进行排序并分配排名 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36096311/

相关文章:

python - 为什么我重新实现的 QCheckBox.hitButton 只适用于检查指示器的一小部分区域?

python - Python 3.5 中的 MSER 特征提取

python - 使用python下载sharepoint 365文档

python - 在python中递归制作目录

javascript - 初始设置要排序的 HTML 列

python - Select into subdict 从多个表

php - 创建多维数组的算法

c# - 对嵌套的通用列表进行排序/排序

按内部列表的最后一项对列表列表进行排序的 pythonic 方法

mysql - 按关联模型中的列对 Rails 数据库表进行排序