如何基于另一列中的值将值移到新列中

问题描述

我有一组患者观察值(Obs)(例如血压,心率,呼吸频率等)(这并不详尽,可以更改为I,需要通过从Obs中提取唯一值来生成此列表列)。

当前每行数据代表一个值,该值对应于应该进行记录的时间点,进行记录的时间以及患者就诊ID。

我想重新排列,以使每个时间点对每个患者进行的所有观察(原始Obs列的唯一值)显示在一行上。有时在某个时间点对观察取两个值-在这种情况下我想在后面取一个值。有时在那个时间点不记录观察值,在这种情况下返回NaN(或其他Null值)。

如果数据文件的容量达到22GB,则将尽可能地高效!

样本数据

Index,VisitID,Obs,Obs_DTM,Entered_DTM,Value

0,33,BP,2018-11-06 20:30:00,2018-11-06 20:31:08,120

1,HR,2018-11-06 20:31:12,98

2,SPO2,2018-11-06 20:31:14,99

3,RR,2018-11-06 20:31:10,104

4,2018-11-06 20:32:00,22

5,2018-07-23 21:28:00,2018-07-23 21:32:10,20

6,2018-07-23 21:32:15,102

7,34,2018-07-25 20:32:00,2018-07-25 21:42:07,98

8,GCS,2018-07-25 21:42:10,12

9,2018-07-25 21:41:58,99

10,SpO2,2018-07-25 21:42:15,89

11,2018-07-25 21:42:12,13

12,2018-07-25 22:54:00,2018-07-25 22:52:00,14 

返回

Index,BP_Value,BP_DTM,HR_Value,HR_DTM,SPO2_Value,SPO2_DTM,RR_Value,RR_DTM,GCS_Value,GCS_DTM

0,120,98,99,22,NaN,NaN

1,102,20,NaN

2,89,13,12

3,14,2018-07-25 22:52:00

预先感谢您的帮助。

解决方法

我们可以做到:

Ctrl+Shift+A

#only if index is a columns
#df = df.set_index('Index')