python - 如何将 ID 分组在一列中并放入新列?
问题描述
我有一个看起来像这样的数据框:
人力资源 | O2Sat | 温度 | 舒张压 | 响应 | P_ID |
---|---|---|---|---|---|
96 | 99.2 | 36.50 | 60.0 | 10.0 | 1 |
95 | 100.0 | 39.50 | 68.5 | 12.0 | 1 |
110 | 85.8 | 37.95 | 58.5 | 19.2 | 2 |
100 | 95.5 | 35.45 | 45.9 | 11.5 | 2 |
89 | 98.0 | 38.10 | 65.4 | 10.5 | 3 |
98 | 100.0 | 36.50 | 49.5 | 15.8 | 3 |
102 | 100.0 | 37.45 | 60.0 | 16.0 | 4 |
115 | 95.0 | 38.05 | 55.8 | 14.5 | 4 |
我想在单个 ID(ID = 1)下有第一两行(P_ID = 1),依此类推。因此,当我根据患者 ID 进行分析时,它会将具有该 ID 的所有行视为一个组,而不是将它们作为单独的行处理。像这样:
我怎么能这样做?请帮忙。
更新:
这将是我想要的数据框输出。这是来自 PhysioNet Sepsis Challenge 2019 的时间序列数据。我将每一行视为一个单独的患者。但这不是一个好方法。无论患者有多少条目(行),我都希望对患者进行明智的分析。不将单个行视为单独的患者,而是将单个行视为具有唯一 ID 的该患者的数据。
解决方案
您想要获得的输出称为Multi-index
数据框。正如您提到的数据来自PhysioNet Sepsis Challenge 2019
,有一列ICULOS
是每个患者的重要信息。您也可以将数据框转换为包含此列的多索引数据框。如下所示:
假设您包含以下列ICULOS
:
人力资源 | O2Sat | 温度 | 舒张压 | 响应 | P_ID | 伊库洛斯 |
---|---|---|---|---|---|---|
96 | 99.2 | 36.50 | 60.0 | 10.0 | 1 | 1 |
95 | 100.0 | 39.50 | 68.5 | 12.0 | 1 | 2 |
110 | 85.8 | 37.95 | 58.5 | 19.2 | 2 | 1 |
100 | 95.5 | 35.45 | 45.9 | 11.5 | 2 | 2 |
89 | 98.0 | 38.10 | 65.4 | 10.5 | 3 | 1 |
98 | 100.0 | 36.50 | 49.5 | 15.8 | 3 | 2 |
102 | 100.0 | 37.45 | 60.0 | 16.0 | 4 | 1 |
115 | 95.0 | 38.05 | 55.8 | 14.5 | 4 | 2 |
只需这样做:
df1 = df.set_index(["P_ID", "ICULOS"])
df1.head()
# Output:
HR O2Sat Temp DBP Resp
P_ID ICULOS
1 1 96 99.2 36.50 60.0 10.0
2 95 100.0 39.50 68.5 12.0
2 1 110 85.8 37.95 58.5 19.2
2 100 95.5 35.45 45.9 11.5
3 1 89 98.0 38.10 65.4 10.5
这样你就可以进行分析了。
推荐阅读
- java - Maven 编译器插件使用自动 java 9 模块失败
- sql - 计算 varchar 数组 Postgres 中不同元素的数量
- python - 根据单独的 csv 中两列的两个值之间的比较删除 csv 行
- asp.net-core - 身份服务器 4 备用注销重定向 uri
- c# - 如何搜索客户并能够更新他们?
- r - 如何将图像渲染成图块?
- firebase - 如何在 Flutter 应用程序中显示 Firestore 数据库中的文档
- amazon-web-services - 尝试连接到我在 Amazon 上的 EC2 实例时出现问题
- javascript - 在 Javascript 函数中打开的对话框不允许选择文件
- angular - 为什么我的物品返回两次并作为空元素返回?