如何在Pandas中为DataFrame重复的患者ID生成出现次序编号
Pandas实现患者ID出现次序标记方案
直接使用groupby()配合cumcount()方法即可实现需求,cumcount()会按分组统计行的出现序号,默认从0开始计数,加1即可得到从1开始的次序标记。
基础实现代码
import pandas as pd # 构造示例DataFrame,可替换为你自己的数据集 df = pd.DataFrame({ '患者ID': ['P001', 'P002', 'P001', 'P003', 'P002', 'P001', 'P002'] }) # 新增出现次序列 df['ID出现次序'] = df.groupby('患者ID').cumcount() + 1
输出效果参考
| 患者ID | ID出现次序 |
|---|---|
| P001 | 1 |
| P002 | 1 |
| P001 | 2 |
| P003 | 1 |
| P002 | 2 |
| P001 | 3 |
| P002 | 3 |
场景适配说明
- 次序计算严格遵循DataFrame原有的行顺序,如果你需要按照特定字段(比如就诊时间、挂号时间)排序后再统计次序,先执行排序操作再跑上面的计数逻辑即可,示例:
# 先按患者ID、就诊日期升序排序后再统计 df = df.sort_values(by=['患者ID', '就诊日期'], ascending=[True, True]) df['ID出现次序'] = df.groupby('患者ID').cumcount() + 1
内容的提问来源于stack exchange,提问作者Moritz Uthe
相关产品推荐
相关产品推荐

