我有一个数据帧,如下所示:
HR | O2Sat | >Temp | DBP | >Resp | _ID|||
---|---|---|---|---|---|---|---|
96 | 99.2 | 36.50 | >td style="text-align:centre!">60.0<1.0>|||||
95 | 100.0 | >td style="text align:central;">39.5068.5 | <1.0>|||||
110 | 85.8 | 37.95 | >td style="ext-align:centre">58.5<19.2>|||||
100 | 95.5 | 35.45 | >td style="ext-align:centre">45.9<11.5><2>|||||
89 | 98.0 | 38.10 | 65.4 | 10.5 | >3 | ||
98 | 1100.0 | 36.50 | >td style="ext-align:center;">49.515.8 | ||||
102 | 1100.0 | 37.45 | >td style="ext-align:centre!">60.0115 | 95.0 | 38.05 | >td style="ext-align:centre!">55.8<14.5>4 |
要获得的输出称为Multi-index
数据帧。正如您所提到的,数据来自PhysioNet Sepsis Challenge 2019
,有一列包含ICULOS
,这是每个患者的重要信息。您可以将数据帧转换为包含此列的多索引数据帧。如下所示:
假设您包含ICULOS
列:
HR | O2Sat | >Temp | DBP | >Resp | <1th>P_ID<2th>ICULID操作系统|||
---|---|---|---|---|---|---|---|
96 | 99.2 | 36.50 | >td style="ext-align:center;">60.0<1.0>1 | ||||
95 | 100.0 | 39.50 | 110 | 85.8 | >td style="text align:central;">37.9558.5 | >td style="ext-align:ccenter;">19.2||
100 | 95.5 | 35.45 | >td style="ext-align:centre">45.9<11.5>>2 | <2>||||
89 | 98.0 | 38.10 | 65.4 | 10.5 | >|||
98 | 100.0 | 36.50 | 102 | 10.00 | 37.45 | >td style="ext-align:centre!">60.0<16.0>4 | |
115 | 95.0 | 38.05 | >td style="ext-align:center;">55.8<14.5>4 | 2 |
让我们想象一下以下DataFrame:
col1 col2
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 C 6
6 C 7
7 D 8
您可以mask
duplicated
密钥:
df['col1'] = df.mask(df['col1'].duplicated(), '')
输出:
col1 col2
0 A 1
1 2
2 3
3 B 4
4 5
5 C 6
6 7
7 D 8
注意。请注意,数据帧的内容发生了变化,现在不能使用第2行中的值A,例如
您可以尝试:
df.loc[df['P_ID'].eq(df['P_ID'].shift()), 'P_ID'] = ''
df = df.set_index('P_ID').reset_index()
输出:
>>> df
P_ID HR O2Sat Temp DBP Resp
0 1 96 99.2 36.50 60.0 10.0
1 95 100.0 39.50 68.5 12.0
2 2 110 85.8 37.95 58.5 19.2
3 100 95.5 35.45 45.9 11.5
4 3 89 98.0 38.10 65.4 10.5
5 98 100.0 36.50 49.5 15.8
6 4 102 100.0 37.45 60.0 16.0
7 115 95.0 38.05 55.8 14.5