我有一个数据框,每个人都有多条记录.我想按顺序枚举Python中每个个体的记录.实际上,我想在下表中创建‘SEQUENCE’列:

patient  date      sequence
145      20Jun2009        1
145      24Jun2009        2
145      15Jul2009        3
582      09Feb2008        1
582      21Feb2008        2
987      14Mar2010        1
987      02May2010        2
987      12May2010        3

这个问题与here基本相同,但我正在使用python,无法实现sql解决方案.我怀疑我可以使用一个可计算计数的groupby语句,但到目前为止一直没有成功.谢谢

推荐答案

问题是如何对多列数据进行排序.

一个简单的技巧是将key参数用于sorted函数.

您将按从数组的列构建的字符串进行排序.

rows = ...# your source data

def date_to_sortable_string(date):
  # use datetime package to convert string to sortable date.
  pass

# Assume x[0] === patient_id and x[1] === encounter date

# Sort by patient_id and date
rows_sorted = sorted(rows, key=lambda x: "%0.5d-%s" % (x[0], date_to_sortable_string(x[1])))

for row in rows_sorted:
  print row

Database相关问答推荐

如何限制报表中返回的行数?

Spring DriverManagerDataSource vs apache BasicDataSource

什么是非规范化 mysql 数据库的好方法?

多列上的全文索引如何工作?

阿拉伯字符串上的 WHERE 子句匹配问题

类似 Hibernate 的 C++ 框架

Oracle 数据库统计信息应该多久运行一次?

如何将 MySQL Workbench 连接到 Amazon RDS?

按最强 LIKE 排序 SQL?

不可重复读与脏读的区别

数据库中的整数与字符串

在 SQL Server 中,如何以类似于 Oracle 的SELECT FOR UPDATE WAIT的方式锁定单行?

如何将 SQL Server 数据库图表迁移到另一个数据库?

有没有一种简单的方法来告诉 alembic 迁移到特定版本?

如何从数据库中解析时间

ORM 还是Vietnam of Computer Science吗?

XML、CSV 或数据库格式的 ICD-9 代码列表

在一个查询中使用 group by 计算多列

为什么实体框架连接需要元数据属性?

如何在 Java 中检测 SQL 表的存在?