假设我有这个数据帧,我希望每个唯一的用户ID都有自己的基于日期戳的排名值:In [93]:

df = pd.DataFrame({

'userid':['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],

'date_stamp':['2016-02-01', '2016-02-01', '2016-02-04', '2016-02-08', '2016-02-04', '2016-02-10', '2016-02-10', '2016-02-12'],

'tie_breaker':[1,2,3,4,1,2,3,4]})

df['date_stamp'] = df['date_stamp'].map(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d"))

df['rank'] = df.groupby(['userid'])['date_stamp'].rank(ascending=True, method='min')

df

Out[93]:

date_stamp tie_breaker userid rank

0 2016-02-01 1 a 1

1 2016-02-01 2 a 1

2 2016-02-04 3 a 3

3 2016-02-08 4 a 4

4 2016-02-04 1 b 1

5 2016-02-10 2 b 2

6 2016-02-10 3 b 2

7 2016-02-12 4 b 4

好吧,但是如果我想在有两个相同日期的情况下添加另一个字段作为打平比分的工具呢?我希望有些事情可以简单到:

^{pr2}$

但那没用-有什么想法吗?在

理想输出:date_stamp tie_breaker userid rank

0 2/1/16 1 a 1

1 2/1/16 2 a 2

2 2/4/16 3 a 3

3 2/8/16 4 a 4

4 2/4/16 1 b 1

5 2/10/16 2 b 2

6 2/10/16 3 b 3

7 2/12/16 4 b 4

编辑以获得真实数据

看起来这里的顶级解决方案不能正确处理tie峎u breaker字段中的零-知道发生了什么吗?在df = pd.DataFrame({

'userid':['10010012083198581013', '10010012083198581013', '10010012083198581013', '10010012083198581013','10010012083198581013'],

'date_stamp':['2015-12-26 13:24:37', '2015-11-25 11:24:13', '2015-10-25 12:13:59', '2015-02-16 22:59:58','2015-08-17 11:43:43'],

'tie_breaker':[460000156735858, 460000152444239, 460000147374709, 11083155016444116916,0]})

df['date_stamp'] = df['date_stamp'].map(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))

df['userid'] = df['userid'].astype(str)

df['tie_breaker'] = df['tie_breaker'].astype(str)

def myrank(g):

return pd.DataFrame(1 + np.lexsort((g['tie_breaker'].rank(),

g['date_stamp'].rank())),

index=g.index)

df['rank']=df.groupby(['userid']).apply(myrank)

df.sort('date_stamp')

Out[101]:

date_stamp tie_breaker userid rank

3 2015-02-16 11083155016444116916 10010012083198581013 2

4 2015-08-17 0 10010012083198581013 1

2 2015-10-25 460000147374709 10010012083198581013 3

1 2015-11-25 460000152444239 10010012083198581013 5

0 2015-12-26 460000156735858 10010012083198581013 4

python dataframe根据多列排名并生成序号_将rank字段添加到pandas dataframe,按唯一组和多列排序...相关推荐

  1. pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe )

    pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe ) 目录

  2. pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe )

    pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe ) 目录

  3. 根据excel列动态创建mysql表_根据数据库字段动态生成excel模版下载,上传模版获取数据存入数据库(poi 反射)...

    环境:mysql5.7.28 java8 Spring boot 2.2.4 mybatis-plus3.10 动态:根据需求,用户可以选择对应的字段生成excle模版 下载 poi 反射:poi是e ...

  4. python series增加一行_关于python:将一个列表或系列作为一行添加到pandas DataFrame中?...

    因此,我已经初始化了一个空的pandas数据帧,我想在这个数据帧中迭代地将列表(或序列)附加为行.最好的方法是什么? 更好的答案可以在下面找到:stackoverflow.com/questions/ ...

  5. Python字典(Dictionary)操作全解【创建、读取、修改、添加、删除、有序字典、浅复制、排序】

    字典是"键-值"对的无序可变序列,字典中的每个元素可以分为两部分,"键"和"值".定义字典时,每个元素的"键"和&quo ...

  6. mysql 分布式 生成序号_分布式唯一ID生成方案

    唯一ID在业务系统中经常用到,例如数据库的唯一主键,那么唯一ID如何生成,我们这里介绍一些常见的实现方案. 字符串ID 如果采用字符串id,那么很简单,直接使用jdk自带的UUID,原始生成的是带中划 ...

  7. Python之Pandas:pandas.DataFrame.to_csv函数的简介、具体案例、使用方法详细攻略

    Python之Pandas:pandas.DataFrame.to_csv函数的简介.具体案例.使用方法详细攻略 目录 pandas.DataFrame.to_csv函数的简介 pandas.to_c ...

  8. 学python看什么书好1002无标题-如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

  9. python按列读取txt文件_如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

最新文章

  1. 【Deep Learning笔记】Optic Disc 数据集
  2. 使用Duilib做桌面应用总结
  3. oracle中的输入 amp,Oracle之SQL学习
  4. 从0到千万DAU,这5年闲鱼架构如何演进?
  5. 系统架构师学习笔记-信息系统基础知识
  6. django模板的使用方法
  7. 【原创】VS2010 C++ Debug 出现 SXS: RtlCreateActivati...
  8. 计算机主机内部防尘装置,一种计算机主机用防尘装置制造方法及图纸
  9. uniapp使用阿里图标库
  10. oracle 12cora 03113,Oracle12.2 ORA-03113
  11. 06. Java面向对象——更改器方法和访问器方法
  12. 三菱PLC与第三方设备TCP通讯_三菱、西门子TCP/RS485通讯等问题解答
  13. 【Vue开发实战课后题】子组件为何不可以修改父组件传递的props?
  14. requestAnimationFrame运动框架实现播放中连续变速动画效果
  15. LumaQQ源码,注解.下载的用户看一下.
  16. Aspose.CAD库简介
  17. QT Opc ua Client (一) qopcua-- windows
  18. 【附源码】Python计算机毕业设计木棉堂水果电商平台
  19. 【STC15系列】SYK-0806-A2S1 工业自动化控制之【12-步进电机精确定位】
  20. cadence SPB17.4 建立CIS数据库的原理图库

热门文章

  1. 前端基础_像素的处理
  2. 成绩管理系统(C语言)完整代码,纯C的练手程序
  3. 读取ntfs的usn
  4. 怎么简述计算机网络的含义,事业单位的计算机网络信息管理及实践意义论述
  5. 【论文笔记】Reasoning about Entailment with Neural Attention
  6. Vue3中setup前写async页面不显示
  7. 电脑c盘数据迁移的方法
  8. 彼得.得鲁克与因果定律
  9. 虚拟化服务器授权,VMware授权变相收费? 虚拟化一大障碍
  10. (原创)直观了解通道混和器的校色作用